<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Bomberman:  Fichier source de /home/ph3w/Bureau/lif7-bomberman/moteur_ncurses.cpp</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Généré par Doxygen 1.7.1 -->
<script type="text/javascript">
function hasClass(ele,cls) {
  return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
  if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
  if (hasClass(ele,cls)) {
    var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
    ele.className=ele.className.replace(reg,' ');
  }
}

function toggleVisibility(linkObj) {
 var base = linkObj.getAttribute('id');
 var summary = document.getElementById(base + '-summary');
 var content = document.getElementById(base + '-content');
 var trigger = document.getElementById(base + '-trigger');
 if ( hasClass(linkObj,'closed') ) {
   summary.style.display = 'none';
   content.style.display = 'block';
   trigger.src = 'open.png';
   removeClass(linkObj,'closed');
   addClass(linkObj,'opened');
 } else if ( hasClass(linkObj,'opened') ) {
   summary.style.display = 'block';
   content.style.display = 'none';
   trigger.src = 'closed.png';
   removeClass(linkObj,'opened');
   addClass(linkObj,'closed');
 }
 return false;
}
</script>
<div class="header">
  <div class="headertitle">
<h1>/home/ph3w/Bureau/lif7-bomberman/moteur_ncurses.cpp</h1>  </div>
</div>
<div class="contents">
<a href="moteur__ncurses_8cpp.html">Aller à la documentation de ce fichier.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include &quot;<a class="code" href="moteur__ncurses_8h.html">moteur_ncurses.h</a>&quot;</span>
<a name="l00002"></a>00002 <span class="preprocessor">#include &quot;<a class="code" href="debug_8h.html">debug.h</a>&quot;</span>
<a name="l00003"></a>00003 
<a name="l00004"></a>00004 <span class="keywordtype">bool</span> <a class="code" href="classmoteur__ncurses.html#a80ff5f97779c081cf278601e0e77757a">moteur_ncurses::c_premierAffichage</a> = 1;
<a name="l00005"></a>00005 
<a name="l00006"></a>00006 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00007"></a>00007 <span class="comment">* @fn void moteur_ncurses::forcerRafraichissement()</span>
<a name="l00008"></a>00008 <span class="comment">* @brief Permet de forcer un affichage complet</span>
<a name="l00009"></a>00009 <span class="comment">*/</span>
<a name="l00010"></a>00010 
<a name="l00011"></a>00011 
<a name="l00012"></a>00012 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00013"></a>00013 <span class="comment">* @fn moteur_ncurses::moteur_ncurses()</span>
<a name="l00014"></a>00014 <span class="comment">* @brief Initialise la class moteur_ncurses</span>
<a name="l00015"></a>00015 <span class="comment">*</span>
<a name="l00016"></a>00016 <span class="comment">* Initialise l&#39;écran ncurses et prépare le &quot;terrain&quot; pour les traitements future</span>
<a name="l00017"></a>00017 <span class="comment">*/</span>
<a name="l00018"></a><a class="code" href="classmoteur__ncurses.html#adfdc27c0e515a91a72146f93c91ccbe6">00018</a> <a class="code" href="classmoteur__ncurses.html#adfdc27c0e515a91a72146f93c91ccbe6" title="Initialise la class moteur_ncurses.">moteur_ncurses::moteur_ncurses</a>()
<a name="l00019"></a>00019 {
<a name="l00020"></a>00020     <span class="keywordflow">if</span>( !initscr() )<span class="comment">// Passe l&#39;écran texte en mode NCurses</span>
<a name="l00021"></a>00021         stdErrorE(<span class="stringliteral">&quot;Erreur lors de l&#39;initialisation de ncurses !&quot;</span>);
<a name="l00022"></a>00022 
<a name="l00023"></a>00023     <span class="comment">// Permet de changer la taille du terminal</span>
<a name="l00024"></a>00024     <span class="comment">//resize_term(50, 100);</span>
<a name="l00025"></a>00025 
<a name="l00026"></a>00026     clear();        <span class="comment">/* Efface l&#39;écran */</span>
<a name="l00027"></a>00027     noecho();       <span class="comment">/* Lorsqu&#39;une touche est préssée au clavier, elle n&#39;apparait pas à  l&#39;écran */</span>
<a name="l00028"></a>00028     cbreak();       <span class="comment">/* Un caractère est directement affiché, il ne passe pas dans un buffer */</span>
<a name="l00029"></a>00029                     <span class="comment">/* In the cbreak() mode these control characters are interpreted as any other character by the terminal driver. */</span>
<a name="l00030"></a>00030     <span class="comment">/*raw();*/</span>      <span class="comment">/* In the raw() mode these characters are directly passed to the program without generating a signal. */</span>
<a name="l00031"></a>00031     keypad(stdscr, TRUE);       <span class="comment">/* Pour que les flèches, F1, ... soient traitées (il faut le faire après création de la fenêtre) */</span>
<a name="l00032"></a>00032     nodelay( stdscr, <span class="keyword">true</span> );<span class="comment">// Pas de délait d&#39;attente</span>
<a name="l00033"></a>00033 
<a name="l00034"></a>00034     <span class="keywordflow">if</span>( !has_colors() ){
<a name="l00035"></a>00035         this-&gt;<a class="code" href="classmoteur__ncurses.html#a9dd6bbae39e6224f1f88e27b4b23b969" title="Désinitialise la class moteur_ncurses.">~moteur_ncurses</a>();
<a name="l00036"></a>00036         stdErrorE(<span class="stringliteral">&quot;Votre terminal ne supporte pas les couleurs ! STOP ALL...&quot;</span>);
<a name="l00037"></a>00037     }
<a name="l00038"></a>00038     start_color();
<a name="l00039"></a>00039 
<a name="l00040"></a>00040     <span class="comment">// On éclaircit les couleurs si on peut</span>
<a name="l00041"></a>00041     <span class="keywordflow">if</span>( can_change_color() ){
<a name="l00042"></a>00042         <span class="comment">/* int init_color(COLOR, r, g, b);</span>
<a name="l00043"></a>00043 <span class="comment">         * param 1          : color name</span>
<a name="l00044"></a>00044 <span class="comment">         * param 2, 3, 4    : rgb content min = 0, max = 1000</span>
<a name="l00045"></a>00045 <span class="comment">         */</span>
<a name="l00046"></a>00046         init_color(COLOR_RED, 950, 0, 0);
<a name="l00047"></a>00047         init_color(COLOR_YELLOW, 950, 950, 0);
<a name="l00048"></a>00048         init_color(COLOR_BLUE, 0, 0, 950);
<a name="l00049"></a>00049     }
<a name="l00050"></a>00050 
<a name="l00051"></a>00051     init_pair(MU_YELLOW_BLACK, COLOR_YELLOW, COLOR_BLACK);
<a name="l00052"></a>00052     init_pair(MU_RED_BLACK, COLOR_RED, COLOR_BLACK);
<a name="l00053"></a>00053     init_pair(MU_BLUE_BLACK, COLOR_BLUE, COLOR_BLACK);
<a name="l00054"></a>00054     init_pair(MU_GREEN_BLACK, COLOR_GREEN, COLOR_BLACK);
<a name="l00055"></a>00055     init_pair(MU_WHITE_BLACK, COLOR_WHITE, COLOR_BLACK);
<a name="l00056"></a>00056     init_pair(MU_BLACK_YELLOW, COLOR_BLACK, COLOR_YELLOW);
<a name="l00057"></a>00057     init_pair(MU_BLACK_MAGENTA, COLOR_BLACK, COLOR_MAGENTA);
<a name="l00058"></a>00058 
<a name="l00059"></a>00059     curs_set(0);<span class="comment">// Cache le cursor tout moche</span>
<a name="l00060"></a>00060 
<a name="l00061"></a>00061 <span class="preprocessor">    #if defined(WIN32) || defined(WIN64)</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span>        PDC_set_title(<span class="stringliteral">&quot;Bomberman&quot;</span>);
<a name="l00063"></a>00063 <span class="preprocessor">    #endif</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span>}
<a name="l00065"></a>00065 
<a name="l00066"></a>00066 
<a name="l00067"></a>00067 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00068"></a>00068 <span class="comment">* @fn moteur_ncurses::~moteur_ncurses()</span>
<a name="l00069"></a>00069 <span class="comment">* @brief Désinitialise la class moteur_ncurses</span>
<a name="l00070"></a>00070 <span class="comment">*</span>
<a name="l00071"></a>00071 <span class="comment">* -# Rétablis le cursor orginel</span>
<a name="l00072"></a>00072 <span class="comment">* -# Nétoie l&#39;écran</span>
<a name="l00073"></a>00073 <span class="comment">* -# Supprime l&#39;écran NCurses</span>
<a name="l00074"></a>00074 <span class="comment">* -# Désactive NCurses</span>
<a name="l00075"></a>00075 <span class="comment">*/</span>
<a name="l00076"></a><a class="code" href="classmoteur__ncurses.html#a9dd6bbae39e6224f1f88e27b4b23b969">00076</a> <a class="code" href="classmoteur__ncurses.html#a9dd6bbae39e6224f1f88e27b4b23b969" title="Désinitialise la class moteur_ncurses.">moteur_ncurses::~moteur_ncurses</a>()
<a name="l00077"></a>00077 {
<a name="l00078"></a>00078     curs_set(1);<span class="comment">// &lt;- j&#39;aime mon curseur dans mon term !!!</span>
<a name="l00079"></a>00079     clear();
<a name="l00080"></a>00080     refresh(); <span class="comment">/* Print it on to the real screen */</span>
<a name="l00081"></a>00081     delwin(stdscr);
<a name="l00082"></a>00082     endwin();<span class="comment">/* End curses mode */</span>
<a name="l00083"></a>00083 }
<a name="l00084"></a>00084 
<a name="l00085"></a>00085 
<a name="l00086"></a>00086 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00087"></a>00087 <span class="comment">* @fn void moteur_ncurses::cadre()</span>
<a name="l00088"></a>00088 <span class="comment">* @brief Affiche un cadre au tour (interieur) de la fenêtre</span>
<a name="l00089"></a>00089 <span class="comment">*/</span>
<a name="l00090"></a><a class="code" href="classmoteur__ncurses.html#aa5d8fae6272f29e7fc0981a988b71a49">00090</a> <span class="keywordtype">void</span> <a class="code" href="classmoteur__ncurses.html#aa5d8fae6272f29e7fc0981a988b71a49" title="Affiche un cadre au tour (interieur) de la fenêtre.">moteur_ncurses::cadre</a>()
<a name="l00091"></a>00091 {
<a name="l00092"></a>00092     clear();<span class="comment">// Efface l&#39;écran</span>
<a name="l00093"></a>00093 
<a name="l00094"></a>00094     attron(COLOR_PAIR(MU_YELLOW_BLACK));
<a name="l00095"></a>00095     mvaddstr(1, (getmaxx(stdscr)-9<span class="comment">/*Taille du mot*/</span>)/2, <span class="stringliteral">&quot;Bomberman&quot;</span>);
<a name="l00096"></a>00096     attroff(COLOR_PAIR(MU_YELLOW_BLACK));
<a name="l00097"></a>00097 
<a name="l00098"></a>00098     box(stdscr, 0, 0);
<a name="l00099"></a>00099 
<a name="l00100"></a>00100     refresh(); <span class="comment">/* Print it on to the real screen */</span>
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102 
<a name="l00103"></a>00103 
<a name="l00104"></a>00104 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00105"></a>00105 <span class="comment">* @fn unsigned int moteur_ncurses::menu( const char titre[], const char *choix[], unsigned int nb_choix )</span>
<a name="l00106"></a>00106 <span class="comment">* @brief Créé une sous fenêtre centré.</span>
<a name="l00107"></a>00107 <span class="comment">* @param[in] titre      Titre de la sous fenêtre</span>
<a name="l00108"></a>00108 <span class="comment">* @param[in] choix      Liste des choix a mettre dans la sous fenêtre. ( Tableau de chaine de caractères )</span>
<a name="l00109"></a>00109 <span class="comment">* @param[in] nb_choix   Nombre d&#39;élement dans la liste des choix</span>
<a name="l00110"></a>00110 <span class="comment">* @return Le choix selectionné (sous forme d&#39;un nombre: le ième element de la liste a été selectionné)</span>
<a name="l00111"></a>00111 <span class="comment">*</span>
<a name="l00112"></a>00112 <span class="comment">* La sous fenêtre propose de naviguer parmit une liste ( @a choix )&lt;br /&gt;</span>
<a name="l00113"></a>00113 <span class="comment">* Puis renvoie le choix (sous forme d&#39;un nombre: ième element de la liste)&lt;br /&gt;</span>
<a name="l00114"></a>00114 <span class="comment">* @code</span>
<a name="l00115"></a>00115 <span class="comment">* // Exemple</span>
<a name="l00116"></a>00116 <span class="comment">* const char* choix[] = {</span>
<a name="l00117"></a>00117 <span class="comment">*   &quot;Choix 1&quot;,</span>
<a name="l00118"></a>00118 <span class="comment">*   &quot;Choix 2&quot;,</span>
<a name="l00119"></a>00119 <span class="comment">*   &quot;Choix 3&quot;,</span>
<a name="l00120"></a>00120 <span class="comment">*   &quot;Choix 4&quot;,</span>
<a name="l00121"></a>00121 <span class="comment">*   &quot;Choix 5&quot;</span>
<a name="l00122"></a>00122 <span class="comment">* };</span>
<a name="l00123"></a>00123 <span class="comment">* unsigned int choix_selectionner = menu( &quot;Liste de mes choix&quot;, choix, 5 );</span>
<a name="l00124"></a>00124 <span class="comment">* @endcode</span>
<a name="l00125"></a>00125 <span class="comment">*/</span>
<a name="l00126"></a><a class="code" href="classmoteur__ncurses.html#ade52341b4b08a8eca9ee3c81c01abe7c">00126</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classmoteur__ncurses.html#ade52341b4b08a8eca9ee3c81c01abe7c" title="Créé une sous fenêtre centré.">moteur_ncurses::menu</a>( <span class="keyword">const</span> <span class="keywordtype">char</span> titre[], <span class="keyword">const</span> <span class="keywordtype">char</span> *choix[], <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nb_choix )
<a name="l00127"></a>00127 {
<a name="l00128"></a>00128     <span class="keywordtype">int</span> key=0;
<a name="l00129"></a>00129     WINDOW* win_menu = 0;
<a name="l00130"></a>00130     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    titre_taille = strlen(titre),
<a name="l00131"></a>00131                     highLight=1,
<a name="l00132"></a>00132                     i;<span class="comment">// i : parcours des choix</span>
<a name="l00133"></a>00133 
<a name="l00134"></a>00134     <span class="comment">// On affiche le super cadre :D</span>
<a name="l00135"></a>00135     <a class="code" href="classmoteur__ncurses.html#aa5d8fae6272f29e7fc0981a988b71a49" title="Affiche un cadre au tour (interieur) de la fenêtre.">cadre</a>();
<a name="l00136"></a>00136 
<a name="l00137"></a>00137     win_menu = newwin(5+nb_choix<span class="comment">/*HEIGHT*/</span>, 30<span class="comment">/*WIDTH*/</span>, (getmaxy(stdscr)-5-nb_choix)/2, (getmaxx(stdscr)-30)/2);
<a name="l00138"></a>00138     keypad(win_menu, TRUE); <span class="comment">/* Pour que les flèches, F1, ... soient traitées (il faut le faire après création de la fenêtre) */</span>
<a name="l00139"></a>00139 
<a name="l00140"></a>00140     <span class="comment">/***************************************************************************</span>
<a name="l00141"></a>00141 <span class="comment">    * Boucle EVENT</span>
<a name="l00142"></a>00142 <span class="comment">    */</span>
<a name="l00143"></a>00143     <span class="keywordflow">do</span>{
<a name="l00144"></a>00144         <span class="comment">//wclear(win_menu);</span>
<a name="l00145"></a>00145 
<a name="l00146"></a>00146         <span class="comment">// Création d&#39;une boite</span>
<a name="l00147"></a>00147         box(win_menu, 0, 0);
<a name="l00148"></a>00148 
<a name="l00149"></a>00149         <span class="comment">// Affichage du titre</span>
<a name="l00150"></a>00150         mvwaddstr(win_menu, 1, (getmaxx(win_menu)-titre_taille)/2, titre);
<a name="l00151"></a>00151         <span class="comment">/************************************************************************</span>
<a name="l00152"></a>00152 <span class="comment">        * Affichage du menu</span>
<a name="l00153"></a>00153 <span class="comment">        */</span>
<a name="l00154"></a>00154         <span class="keywordflow">for</span>( i=0; i&lt;nb_choix; i++ )
<a name="l00155"></a>00155         {
<a name="l00156"></a>00156             <span class="keywordflow">if</span>( highLight == i+1 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00157"></a>00157                 wattron(win_menu, A_REVERSE);
<a name="l00158"></a>00158                 mvwaddstr(win_menu, i+3, 2, choix[i]);
<a name="l00159"></a>00159                 wattroff(win_menu, A_REVERSE);
<a name="l00160"></a>00160             }<span class="keywordflow">else</span>{
<a name="l00161"></a>00161                 mvwaddstr(win_menu, i+3, 2, choix[i]);
<a name="l00162"></a>00162             }
<a name="l00163"></a>00163         }
<a name="l00164"></a>00164         wrefresh(win_menu);
<a name="l00165"></a>00165 
<a name="l00166"></a>00166 
<a name="l00167"></a>00167         <span class="comment">/************************************************************************</span>
<a name="l00168"></a>00168 <span class="comment">        * EVENT</span>
<a name="l00169"></a>00169 <span class="comment">        */</span>
<a name="l00170"></a>00170         key = wgetch(win_menu);
<a name="l00171"></a>00171         <span class="keywordflow">switch</span>( key )
<a name="l00172"></a>00172         {
<a name="l00173"></a>00173             <span class="keywordflow">case</span> KEY_UP:
<a name="l00174"></a>00174                 <span class="keywordflow">if</span>( highLight == 1 )
<a name="l00175"></a>00175                     highLight = nb_choix;
<a name="l00176"></a>00176                 <span class="keywordflow">else</span>
<a name="l00177"></a>00177                     --highLight;
<a name="l00178"></a>00178                 <span class="keywordflow">break</span>;
<a name="l00179"></a>00179 
<a name="l00180"></a>00180             <span class="keywordflow">case</span> KEY_DOWN:
<a name="l00181"></a>00181                 <span class="keywordflow">if</span>( highLight == nb_choix )
<a name="l00182"></a>00182                     highLight = 1;
<a name="l00183"></a>00183                 <span class="keywordflow">else</span>
<a name="l00184"></a>00184                     ++highLight;
<a name="l00185"></a>00185                 <span class="keywordflow">break</span>;
<a name="l00186"></a>00186 
<a name="l00187"></a>00187             <span class="keywordflow">default</span>:
<a name="l00188"></a>00188                 <span class="keywordflow">break</span>;
<a name="l00189"></a>00189         }
<a name="l00190"></a>00190     }<span class="keywordflow">while</span>( key != KEY_ENTER_bis &amp;&amp; key != PADENTER &amp;&amp; key != KEY_ESCAP );
<a name="l00191"></a>00191 
<a name="l00192"></a>00192     <span class="keywordflow">if</span>( key == KEY_ESCAP )
<a name="l00193"></a>00193         highLight = nb_choix;
<a name="l00194"></a>00194 
<a name="l00195"></a>00195     delwin(win_menu);
<a name="l00196"></a>00196 
<a name="l00197"></a>00197     <span class="keywordflow">return</span> highLight;
<a name="l00198"></a>00198 }
<a name="l00199"></a>00199 
<a name="l00200"></a>00200 
<a name="l00201"></a>00201 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00202"></a>00202 <span class="comment">* @fn void moteur_ncurses::afficherConfigurationClavier( unsigned char joueur )</span>
<a name="l00203"></a>00203 <span class="comment">* @brief Menu permettant d&#39;afficher et de modifier la configuration du clavier d&#39;un joueur</span>
<a name="l00204"></a>00204 <span class="comment">* @param[in] joueur     Le numéro du joueur ( de 1 à ... )</span>
<a name="l00205"></a>00205 <span class="comment">*/</span>
<a name="l00206"></a><a class="code" href="classmoteur__ncurses.html#a5a5da4538be5bc5b7e78cc7f96d2f6a8">00206</a> <span class="keywordtype">void</span> <a class="code" href="classmoteur__ncurses.html#a5a5da4538be5bc5b7e78cc7f96d2f6a8" title="Menu permettant d&amp;#39;afficher et de modifier la configuration du clavier d&amp;#39;un joueur...">moteur_ncurses::afficherConfigurationClavier</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> joueur )
<a name="l00207"></a>00207 {
<a name="l00208"></a>00208     <span class="keywordtype">int</span> key=0;
<a name="l00209"></a>00209     <span class="keywordtype">char</span> titre[] = <span class="stringliteral">&quot;Configuration du clavier du joueur x&quot;</span>;
<a name="l00210"></a>00210     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    titre_taille = strlen(titre),
<a name="l00211"></a>00211                     highLight=1;
<a name="l00212"></a>00212     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>   i;<span class="comment">// i : parcours des choix</span>
<a name="l00213"></a>00213 
<a name="l00214"></a>00214 
<a name="l00215"></a>00215     WINDOW* win_menu = 0;
<a name="l00216"></a>00216 
<a name="l00217"></a>00217     <span class="keywordflow">if</span>( joueur == 0 )
<a name="l00218"></a>00218         stdErrorE(<span class="stringliteral">&quot;void moteur_ncurses::afficherConfigurationClavier( 0 ) INTERDIT !&quot;</span>);
<a name="l00219"></a>00219 
<a name="l00220"></a>00220     <span class="comment">// On récupère la config du joueur</span>
<a name="l00221"></a>00221     <a class="code" href="classclavier.html" title="Gère les claviers.">clavier</a>* cl = <a class="code" href="classoptions.html#a3db3c367210272824e13e6bb1260e8c4" title="Initialise la class options.">options::getInstance</a>()-&gt;<a class="code" href="classoptions.html#a281d1464d4a4c827bcbac56ab3c9be94" title="Renvoie le clavier numéro {clavier_numero}.">clavierJoueur</a>( joueur-1 );
<a name="l00222"></a>00222 
<a name="l00223"></a>00223     <span class="keyword">const</span> <span class="keywordtype">char</span>* texte[] = {                     <span class="comment">// ATTENTION ! Si ajout / suppresion d&#39;un menu,</span>
<a name="l00224"></a>00224         <span class="stringliteral">&quot;Haut :                 &quot;</span>,              <span class="comment">// NE PAS OUBLIER de modifier { nbLiens } !</span>
<a name="l00225"></a>00225         <span class="stringliteral">&quot;Bas :                      &quot;</span>,          <span class="comment">// RESPECTER L&#39;ORDRE DEFINIE DANS t_touche ( clavier.h )</span>
<a name="l00226"></a>00226         <span class="stringliteral">&quot;Droite :                   &quot;</span>,
<a name="l00227"></a>00227         <span class="stringliteral">&quot;Gauche :                   &quot;</span>,
<a name="l00228"></a>00228         <span class="stringliteral">&quot;Lancer une bombe :             &quot;</span>,
<a name="l00229"></a>00229         <span class="stringliteral">&quot;Detonateur :                   &quot;</span>
<a name="l00230"></a>00230     };
<a name="l00231"></a>00231     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> nbLiens = 6;
<a name="l00232"></a>00232 
<a name="l00233"></a>00233     <span class="comment">// Modification du titre ( joueur x =&gt; joueur 1 )</span>
<a name="l00234"></a>00234     titre[titre_taille-1] = <span class="charliteral">&#39;0&#39;</span>+joueur;
<a name="l00235"></a>00235 
<a name="l00236"></a>00236     <span class="comment">// Si pas de clavier retourné =&gt; stop la fonction</span>
<a name="l00237"></a>00237     <span class="keywordflow">if</span>( !cl )
<a name="l00238"></a>00238         stdErrorE(<span class="stringliteral">&quot;Erreur lors de la tentative d&#39;affichage de la configuration du clavier du joueur:: afficherConfigurationClavier(%u)&quot;</span>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)joueur);
<a name="l00239"></a>00239 
<a name="l00240"></a>00240     <span class="comment">// On affiche le super cadre :D</span>
<a name="l00241"></a>00241     <a class="code" href="classmoteur__ncurses.html#aa5d8fae6272f29e7fc0981a988b71a49" title="Affiche un cadre au tour (interieur) de la fenêtre.">cadre</a>();
<a name="l00242"></a>00242 
<a name="l00243"></a>00243     win_menu = newwin(12<span class="comment">/*HEIGHT*/</span>, 50<span class="comment">/*WIDTH*/</span>, (getmaxy(stdscr)-12)/2, (getmaxx(stdscr)-50)/2);
<a name="l00244"></a>00244     keypad(win_menu, TRUE); <span class="comment">/* Pour que les flèches, F1, ... soient traitées (il faut le faire après création de la fenêtre) */</span>
<a name="l00245"></a>00245 
<a name="l00246"></a>00246     <span class="comment">/***************************************************************************</span>
<a name="l00247"></a>00247 <span class="comment">    * Boucle EVENT</span>
<a name="l00248"></a>00248 <span class="comment">    */</span>
<a name="l00249"></a>00249     <span class="keywordflow">do</span>{
<a name="l00250"></a>00250         <span class="comment">//wclear(win_menu);</span>
<a name="l00251"></a>00251 
<a name="l00252"></a>00252         <span class="comment">// Création d&#39;une boite</span>
<a name="l00253"></a>00253         box(win_menu, 0, 0);
<a name="l00254"></a>00254 
<a name="l00255"></a>00255         <span class="comment">// Affichage du titre</span>
<a name="l00256"></a>00256         mvwaddstr(win_menu, 1, (getmaxx(win_menu)-titre_taille)/2, titre);
<a name="l00257"></a>00257         <span class="comment">/************************************************************************</span>
<a name="l00258"></a>00258 <span class="comment">        * Affichage du menu</span>
<a name="l00259"></a>00259 <span class="comment">        */</span>
<a name="l00260"></a>00260         <span class="keywordflow">for</span>( i=0; i&lt;nbLiens; i++ )
<a name="l00261"></a>00261         {
<a name="l00262"></a>00262             <span class="keywordflow">if</span>( highLight == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)i+1 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00263"></a>00263                 wattron(win_menu, A_REVERSE);
<a name="l00264"></a>00264                 mvwaddstr(win_menu, 3+i, 2, texte[i]);
<a name="l00265"></a>00265                 <a class="code" href="classmoteur__ncurses.html#a4e1ecb3c99e46d3088caff0d4c57e1f3" title="Affiche une touche. Si nécessaire, un affichage spécifique est fait.">affichageTouche</a>(win_menu, 3+i, 24, cl-&gt;<a class="code" href="classclavier.html#a64ea9fed59e7a3a07c987a412b96880a" title="Renvoie la touche affecté pour une action.">touche</a>((<a class="code" href="classclavier.html#a856f09c9c69488343534494c2e1ed165" title="Les actions possibles avec les touches.">clavier::t_touche</a>)(<a class="code" href="classclavier.html#a856f09c9c69488343534494c2e1ed165a8231b289f48a99aa410bbbeff3bd9b8e">clavier::haut</a>+i)));
<a name="l00266"></a>00266                 wattroff(win_menu, A_REVERSE);
<a name="l00267"></a>00267             }<span class="keywordflow">else</span>{
<a name="l00268"></a>00268                 mvwaddstr(win_menu, 3+i, 2, texte[i]);
<a name="l00269"></a>00269                 <a class="code" href="classmoteur__ncurses.html#a4e1ecb3c99e46d3088caff0d4c57e1f3" title="Affiche une touche. Si nécessaire, un affichage spécifique est fait.">affichageTouche</a>(win_menu, 3+i, 24, cl-&gt;<a class="code" href="classclavier.html#a64ea9fed59e7a3a07c987a412b96880a" title="Renvoie la touche affecté pour une action.">touche</a>((<a class="code" href="classclavier.html#a856f09c9c69488343534494c2e1ed165" title="Les actions possibles avec les touches.">clavier::t_touche</a>)(<a class="code" href="classclavier.html#a856f09c9c69488343534494c2e1ed165a8231b289f48a99aa410bbbeff3bd9b8e">clavier::haut</a>+i)));
<a name="l00270"></a>00270             }
<a name="l00271"></a>00271         }
<a name="l00272"></a>00272 
<a name="l00273"></a>00273         <span class="comment">// Lien de retour</span>
<a name="l00274"></a>00274         <span class="keywordflow">if</span>( highLight == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)i+1 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00275"></a>00275             wattron(win_menu, A_REVERSE);
<a name="l00276"></a>00276             mvwaddstr(win_menu, 3+i, 2, <span class="stringliteral">&quot;Retour&quot;</span>);
<a name="l00277"></a>00277             wattroff(win_menu, A_REVERSE);
<a name="l00278"></a>00278         }<span class="keywordflow">else</span>{
<a name="l00279"></a>00279             mvwaddstr(win_menu, 3+i, 2, <span class="stringliteral">&quot;Retour&quot;</span>);
<a name="l00280"></a>00280         }
<a name="l00281"></a>00281 
<a name="l00282"></a>00282         wrefresh(win_menu);
<a name="l00283"></a>00283 
<a name="l00284"></a>00284 
<a name="l00285"></a>00285 
<a name="l00286"></a>00286         <span class="comment">/************************************************************************</span>
<a name="l00287"></a>00287 <span class="comment">        * EVENT</span>
<a name="l00288"></a>00288 <span class="comment">        */</span>
<a name="l00289"></a>00289         key = wgetch(win_menu);
<a name="l00290"></a>00290         <span class="keywordflow">switch</span>( key )
<a name="l00291"></a>00291         {
<a name="l00292"></a>00292             <span class="keywordflow">case</span> KEY_UP:
<a name="l00293"></a>00293                 <span class="keywordflow">if</span>( highLight == 1 )
<a name="l00294"></a>00294                     highLight = nbLiens+1;
<a name="l00295"></a>00295                 <span class="keywordflow">else</span>
<a name="l00296"></a>00296                     --highLight;
<a name="l00297"></a>00297                 <span class="keywordflow">break</span>;
<a name="l00298"></a>00298 
<a name="l00299"></a>00299             <span class="keywordflow">case</span> KEY_DOWN:
<a name="l00300"></a>00300                 <span class="keywordflow">if</span>( highLight == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)nbLiens+1 )
<a name="l00301"></a>00301                     highLight = 1;
<a name="l00302"></a>00302                 <span class="keywordflow">else</span>
<a name="l00303"></a>00303                     ++highLight;
<a name="l00304"></a>00304                 <span class="keywordflow">break</span>;
<a name="l00305"></a>00305 
<a name="l00306"></a>00306             <span class="comment">// Touche Entrer pressée</span>
<a name="l00307"></a>00307             <span class="keywordflow">case</span> PADENTER:
<a name="l00308"></a>00308             <span class="keywordflow">case</span> KEY_ENTER_bis: {
<a name="l00309"></a>00309                 <span class="keywordflow">if</span>( highLight &lt;= (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)nbLiens ){<span class="comment">// On a selectionné un lien de modification de touche</span>
<a name="l00310"></a>00310                     <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 2);
<a name="l00311"></a>00311                     wattron(win_menu, COLOR_PAIR(MU_RED_BLACK));
<a name="l00312"></a>00312                     mvwaddstr(win_menu, 2, (getmaxx(win_menu)-34)/2, <span class="stringliteral">&quot;Donnez la touche pour cette action&quot;</span>);
<a name="l00313"></a>00313                     wattroff(win_menu, COLOR_PAIR(MU_RED_BLACK));
<a name="l00314"></a>00314                     wrefresh(win_menu);
<a name="l00315"></a>00315 
<a name="l00316"></a>00316                     key = wgetch(win_menu);<span class="comment">// On récup la nouvelle touche</span>
<a name="l00317"></a>00317                     <span class="comment">// Nétoyage de l&#39;écran</span>
<a name="l00318"></a>00318                     <span class="comment">//wclear(win_menu);</span>
<a name="l00319"></a>00319                     <span class="comment">// ReCréation d&#39;une boite</span>
<a name="l00320"></a>00320                     box(win_menu, 0, 0);
<a name="l00321"></a>00321 
<a name="l00322"></a>00322                     <span class="keywordflow">if</span>( key != KEY_ESCAP ){<span class="comment">// Toutes les touches sont accèpté SAUF ECHAP !</span>
<a name="l00323"></a>00323                         cl-&gt;<a class="code" href="classclavier.html#aea4d1270e56db4551c11b0d9c5079a50" title="Définition d&amp;#39;une touche.">defTouche</a>((<a class="code" href="classclavier.html#a856f09c9c69488343534494c2e1ed165" title="Les actions possibles avec les touches.">clavier::t_touche</a>)(<a class="code" href="classclavier.html#a856f09c9c69488343534494c2e1ed165a8231b289f48a99aa410bbbeff3bd9b8e">clavier::haut</a>+highLight-1), key);
<a name="l00324"></a>00324                     }<span class="keywordflow">else</span>{<span class="comment">// Touche ECHAP pressée</span>
<a name="l00325"></a>00325                         key = 0;<span class="comment">// pas envie d&#39;exit completement</span>
<a name="l00326"></a>00326                     }
<a name="l00327"></a>00327                 }<span class="keywordflow">else</span>{
<a name="l00328"></a>00328                     <span class="comment">// On a selectionné &quot;Retour&quot;</span>
<a name="l00329"></a>00329                     <span class="comment">// Donc on quit.</span>
<a name="l00330"></a>00330                     key = KEY_ESCAP;
<a name="l00331"></a>00331                 }
<a name="l00332"></a>00332                 <span class="keywordflow">break</span>;
<a name="l00333"></a>00333             }
<a name="l00334"></a>00334 
<a name="l00335"></a>00335             <span class="keywordflow">default</span>:
<a name="l00336"></a>00336                 <span class="keywordflow">break</span>;
<a name="l00337"></a>00337         }
<a name="l00338"></a>00338     }<span class="keywordflow">while</span>( key != KEY_ESCAP );
<a name="l00339"></a>00339 
<a name="l00340"></a>00340     delwin(win_menu);
<a name="l00341"></a>00341 }
<a name="l00342"></a>00342 
<a name="l00343"></a>00343 
<a name="l00344"></a>00344 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00345"></a>00345 <span class="comment">* @fn void moteur_ncurses::affichageTouche( WINDOW* win, int y, int x, int key )</span>
<a name="l00346"></a>00346 <span class="comment">* @brief Affiche une touche. Si nécessaire, un affichage spécifique est fait.</span>
<a name="l00347"></a>00347 <span class="comment">*</span>
<a name="l00348"></a>00348 <span class="comment">* Exemple d&#39;affichage necessaire la touche KEY_UP ( flèche du haut )</span>
<a name="l00349"></a>00349 <span class="comment">*/</span>
<a name="l00350"></a><a class="code" href="classmoteur__ncurses.html#a4e1ecb3c99e46d3088caff0d4c57e1f3">00350</a> <span class="keywordtype">void</span> <a class="code" href="classmoteur__ncurses.html#a4e1ecb3c99e46d3088caff0d4c57e1f3" title="Affiche une touche. Si nécessaire, un affichage spécifique est fait.">moteur_ncurses::affichageTouche</a>( WINDOW* win, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> key )
<a name="l00351"></a>00351 {
<a name="l00352"></a>00352     <span class="keyword">const</span> <span class="keywordtype">int</span> touches[] = {
<a name="l00353"></a>00353         KEY_ENTER_bis,
<a name="l00354"></a>00354         KEY_DC,
<a name="l00355"></a>00355         KEY_END
<a name="l00356"></a>00356     };
<a name="l00357"></a>00357     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> nbTouches = 3;
<a name="l00358"></a>00358     <span class="keyword">const</span> <span class="keywordtype">char</span>* affichage[] = {
<a name="l00359"></a>00359         <span class="stringliteral">&quot;{ENTRER}&quot;</span>,
<a name="l00360"></a>00360         <span class="stringliteral">&quot;{Suppr}&quot;</span>,
<a name="l00361"></a>00361         <span class="stringliteral">&quot;{Fin}&quot;</span>
<a name="l00362"></a>00362     };
<a name="l00363"></a>00363 
<a name="l00364"></a>00364     <span class="comment">// Affichage spécial pour les flèches directionnelles</span>
<a name="l00365"></a>00365     <span class="keywordflow">switch</span>( key )
<a name="l00366"></a>00366     {
<a name="l00367"></a>00367         <span class="keywordflow">case</span> KEY_UP:
<a name="l00368"></a>00368             mvwaddch(win, y, x, ACS_UARROW);
<a name="l00369"></a>00369             mvwaddstr(win, y, x+1, <span class="stringliteral">&quot;(Fleche directionnelle)&quot;</span>);
<a name="l00370"></a>00370             return ;
<a name="l00371"></a>00371 
<a name="l00372"></a>00372         <span class="keywordflow">case</span> KEY_DOWN:
<a name="l00373"></a>00373             mvwaddch(win, y, x, ACS_DARROW);
<a name="l00374"></a>00374             mvwaddstr(win, y, x+1, <span class="stringliteral">&quot;(Fleche directionnelle)&quot;</span>);
<a name="l00375"></a>00375             return ;
<a name="l00376"></a>00376 
<a name="l00377"></a>00377         <span class="keywordflow">case</span> KEY_LEFT:
<a name="l00378"></a>00378             mvwaddch(win, y, x, ACS_LARROW);
<a name="l00379"></a>00379             mvwaddstr(win, y, x+1, <span class="stringliteral">&quot;(Fleche directionnelle)&quot;</span>);
<a name="l00380"></a>00380             return ;
<a name="l00381"></a>00381 
<a name="l00382"></a>00382         <span class="keywordflow">case</span> KEY_RIGHT:
<a name="l00383"></a>00383             mvwaddch(win, y, x, ACS_RARROW);
<a name="l00384"></a>00384             mvwaddstr(win, y, x+1, <span class="stringliteral">&quot;(Fleche directionnelle)&quot;</span>);
<a name="l00385"></a>00385             return ;
<a name="l00386"></a>00386 
<a name="l00387"></a>00387         <span class="keywordflow">default</span>:
<a name="l00388"></a>00388             <span class="keywordflow">break</span>;
<a name="l00389"></a>00389     }
<a name="l00390"></a>00390 
<a name="l00391"></a>00391     <span class="comment">// On parcours les touches non affichables</span>
<a name="l00392"></a>00392     <span class="keywordflow">for</span>( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> i=0; i&lt;nbTouches; i++ )
<a name="l00393"></a>00393     {
<a name="l00394"></a>00394         <span class="keywordflow">if</span>( touches[i] == key ){
<a name="l00395"></a>00395             mvwaddstr(win, y, x, affichage[i]);
<a name="l00396"></a>00396             return ;
<a name="l00397"></a>00397         }
<a name="l00398"></a>00398     }
<a name="l00399"></a>00399 
<a name="l00400"></a>00400     <span class="keywordflow">if</span>( <span class="charliteral">&#39;!&#39;</span> &lt;= key &amp;&amp; key &lt;= <span class="charliteral">&#39;~&#39;</span> ){<span class="comment">// Caracètres affichables en ASCII ( non étendu )</span>
<a name="l00401"></a>00401         mvwaddch(win, y, x, key);
<a name="l00402"></a>00402         return ;
<a name="l00403"></a>00403     }
<a name="l00404"></a>00404 
<a name="l00405"></a>00405     <span class="comment">// On a rien trouvé dans la base de donnée</span>
<a name="l00406"></a>00406     mvwaddstr(win, y, x, <span class="stringliteral">&quot;{? INCONNU ?}&quot;</span>);
<a name="l00407"></a>00407 }
<a name="l00408"></a>00408 
<a name="l00409"></a>00409 
<a name="l00410"></a>00410 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00411"></a>00411 <span class="comment">* @fn int moteur_ncurses::getNombre( const char titre[], int valeurParDefaut, int valeurMin, int valeurMax, int* returnValue )</span>
<a name="l00412"></a>00412 <span class="comment">* @brief Créer un menu pour récupérer un nombre entré par un utilisateur</span>
<a name="l00413"></a>00413 <span class="comment">* @param[in] titre           Le titre du menu</span>
<a name="l00414"></a>00414 <span class="comment">* @param[in] valeurParDefaut La valeur par défaut</span>
<a name="l00415"></a>00415 <span class="comment">* @param[in] valeurMin       La valeur minimum</span>
<a name="l00416"></a>00416 <span class="comment">* @param[in] valeurMax       La valeur maximum</span>
<a name="l00417"></a>00417 <span class="comment">* @param[out] returnValue    Dans cette variable sera stocké, le nombre obtenu a la fin de la fonction</span>
<a name="l00418"></a>00418 <span class="comment">* @return</span>
<a name="l00419"></a>00419 <span class="comment">*   - 2 : Nombre validé et accèpté</span>
<a name="l00420"></a>00420 <span class="comment">*   - 3 : Action annulée</span>
<a name="l00421"></a>00421 <span class="comment">*/</span>
<a name="l00422"></a><a class="code" href="classmoteur__ncurses.html#a1d09cbe9608be4025643c0e7db9a0069">00422</a> <span class="keywordtype">int</span> <a class="code" href="classmoteur__ncurses.html#a1d09cbe9608be4025643c0e7db9a0069" title="Créer un menu pour récupérer un nombre entré par un utilisateur.">moteur_ncurses::getNombre</a>( <span class="keyword">const</span> <span class="keywordtype">char</span> titre[], <span class="keywordtype">int</span> valeurParDefaut, <span class="keywordtype">int</span> valeurMin, <span class="keywordtype">int</span> valeurMax, <span class="keywordtype">int</span>* returnValue )
<a name="l00423"></a>00423 {
<a name="l00424"></a>00424     <span class="keywordtype">int</span> key=0;
<a name="l00425"></a>00425     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    titre_taille = strlen(titre),
<a name="l00426"></a>00426                     highLight=2;
<a name="l00427"></a>00427     WINDOW* win_menu = 0;
<a name="l00428"></a>00428 
<a name="l00429"></a>00429     <span class="keywordflow">if</span>( valeurMin &gt; valeurParDefaut || valeurParDefaut &gt; valeurMax ){
<a name="l00430"></a>00430         stdError(<span class="stringliteral">&quot;Valeur incorrect ! valeurMin(%d) &lt;= valeurParDefaut(%d) &amp;&amp; valeurParDefaut(%d) &lt;= valeurMax(%d)&quot;</span>, valeurMin, valeurParDefaut, valeurParDefaut, valeurMax);
<a name="l00431"></a>00431         valeurParDefaut = (valeurMax - valeurMin)/2+valeurMin;
<a name="l00432"></a>00432     }
<a name="l00433"></a>00433 
<a name="l00434"></a>00434     *returnValue = valeurParDefaut;
<a name="l00435"></a>00435 
<a name="l00436"></a>00436     <span class="comment">// On affiche le super cadre :D</span>
<a name="l00437"></a>00437     <a class="code" href="classmoteur__ncurses.html#aa5d8fae6272f29e7fc0981a988b71a49" title="Affiche un cadre au tour (interieur) de la fenêtre.">cadre</a>();
<a name="l00438"></a>00438 
<a name="l00439"></a>00439     win_menu = newwin(8<span class="comment">/*HEIGHT*/</span>, 35<span class="comment">/*WIDTH*/</span>, (getmaxy(stdscr)-8)/2, (getmaxx(stdscr)-30)/2);
<a name="l00440"></a>00440     keypad(win_menu, TRUE); <span class="comment">/* Pour que les flèches, F1, ... soient traitées (il faut le faire après création de la fenêtre) */</span>
<a name="l00441"></a>00441 
<a name="l00442"></a>00442     <span class="comment">/***************************************************************************</span>
<a name="l00443"></a>00443 <span class="comment">    * Boucle EVENT</span>
<a name="l00444"></a>00444 <span class="comment">    */</span>
<a name="l00445"></a>00445     <span class="keywordflow">do</span>{
<a name="l00446"></a>00446         <span class="comment">//wclear(win_menu);</span>
<a name="l00447"></a>00447 
<a name="l00448"></a>00448         <span class="comment">// Création d&#39;une boite</span>
<a name="l00449"></a>00449         box(win_menu, 0, 0);
<a name="l00450"></a>00450 
<a name="l00451"></a>00451         <span class="comment">// Affichage du titre</span>
<a name="l00452"></a>00452         mvwaddstr(win_menu, 1, (getmaxx(win_menu)-titre_taille)/2, titre);
<a name="l00453"></a>00453         <span class="comment">/************************************************************************</span>
<a name="l00454"></a>00454 <span class="comment">        * Affichage du menu</span>
<a name="l00455"></a>00455 <span class="comment">        */</span>
<a name="l00456"></a>00456         <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 3);
<a name="l00457"></a>00457         <span class="comment">// Le nombre en cours de modif</span>
<a name="l00458"></a>00458         <span class="keywordflow">if</span>( highLight == 1 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00459"></a>00459             wattron(win_menu, A_REVERSE);
<a name="l00460"></a>00460             mvwprintw(win_menu, 3, (getmaxx(win_menu)-8-<a class="code" href="outils_8cpp.html#ab0a855d1eae4c34ffa5b7805b268dbbe" title="Calcule la longueur d&amp;#39;un nombre.">getTailleNombre</a>(*returnValue))/2, <span class="stringliteral">&quot;&lt;-- %d --&gt;&quot;</span>, *returnValue);
<a name="l00461"></a>00461             wattroff(win_menu, A_REVERSE);
<a name="l00462"></a>00462         }<span class="keywordflow">else</span>{
<a name="l00463"></a>00463             mvwprintw(win_menu, 3, (getmaxx(win_menu)-8-<a class="code" href="outils_8cpp.html#ab0a855d1eae4c34ffa5b7805b268dbbe" title="Calcule la longueur d&amp;#39;un nombre.">getTailleNombre</a>(*returnValue))/2, <span class="stringliteral">&quot;&lt;-- %d --&gt;&quot;</span>, *returnValue);
<a name="l00464"></a>00464         }
<a name="l00465"></a>00465         <span class="comment">// Lien de pour valider le choix</span>
<a name="l00466"></a>00466         <span class="keywordflow">if</span>( highLight == 2 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00467"></a>00467             wattron(win_menu, A_REVERSE);
<a name="l00468"></a>00468             mvwaddstr(win_menu, 4, 2, <span class="stringliteral">&quot;Ok&quot;</span>);
<a name="l00469"></a>00469             wattroff(win_menu, A_REVERSE);
<a name="l00470"></a>00470         }<span class="keywordflow">else</span>{
<a name="l00471"></a>00471             mvwaddstr(win_menu, 4, 2, <span class="stringliteral">&quot;Ok&quot;</span>);
<a name="l00472"></a>00472         }
<a name="l00473"></a>00473         <span class="comment">// Lien de retour</span>
<a name="l00474"></a>00474         <span class="keywordflow">if</span>( highLight == 3 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00475"></a>00475             wattron(win_menu, A_REVERSE);
<a name="l00476"></a>00476             mvwaddstr(win_menu, 5, 2, <span class="stringliteral">&quot;Retour&quot;</span>);
<a name="l00477"></a>00477             wattroff(win_menu, A_REVERSE);
<a name="l00478"></a>00478         }<span class="keywordflow">else</span>{
<a name="l00479"></a>00479             mvwaddstr(win_menu, 5, 2, <span class="stringliteral">&quot;Retour&quot;</span>);
<a name="l00480"></a>00480         }
<a name="l00481"></a>00481 
<a name="l00482"></a>00482         wrefresh(win_menu);
<a name="l00483"></a>00483 
<a name="l00484"></a>00484 
<a name="l00485"></a>00485         <span class="comment">/************************************************************************</span>
<a name="l00486"></a>00486 <span class="comment">        * EVENT</span>
<a name="l00487"></a>00487 <span class="comment">        */</span>
<a name="l00488"></a>00488         key = wgetch(win_menu);
<a name="l00489"></a>00489         <span class="keywordflow">switch</span>( key )
<a name="l00490"></a>00490         {
<a name="l00491"></a>00491             <span class="keywordflow">case</span> KEY_UP:
<a name="l00492"></a>00492                 <span class="keywordflow">if</span>( highLight == 1 )
<a name="l00493"></a>00493                     highLight = 3;
<a name="l00494"></a>00494                 <span class="keywordflow">else</span>
<a name="l00495"></a>00495                     --highLight;
<a name="l00496"></a>00496                 <span class="keywordflow">break</span>;
<a name="l00497"></a>00497 
<a name="l00498"></a>00498             <span class="keywordflow">case</span> KEY_DOWN:
<a name="l00499"></a>00499                 <span class="keywordflow">if</span>( highLight == 3 )
<a name="l00500"></a>00500                     highLight = 1;
<a name="l00501"></a>00501                 <span class="keywordflow">else</span>
<a name="l00502"></a>00502                     ++highLight;
<a name="l00503"></a>00503                 <span class="keywordflow">break</span>;
<a name="l00504"></a>00504 
<a name="l00505"></a>00505             <span class="keywordflow">case</span> KEY_RIGHT:
<a name="l00506"></a>00506                 <span class="keywordflow">if</span>( *returnValue+1 &gt; valeurMax )
<a name="l00507"></a>00507                     *returnValue = valeurMin;
<a name="l00508"></a>00508                 <span class="keywordflow">else</span>
<a name="l00509"></a>00509                     (*returnValue)++;
<a name="l00510"></a>00510                 <span class="keywordflow">break</span>;
<a name="l00511"></a>00511 
<a name="l00512"></a>00512             <span class="keywordflow">case</span> KEY_LEFT:
<a name="l00513"></a>00513                 <span class="keywordflow">if</span>( *returnValue-1 &lt; valeurMin )
<a name="l00514"></a>00514                     *returnValue = valeurMax;
<a name="l00515"></a>00515                 <span class="keywordflow">else</span>
<a name="l00516"></a>00516                     (*returnValue)--;
<a name="l00517"></a>00517                 <span class="keywordflow">break</span>;
<a name="l00518"></a>00518 
<a name="l00519"></a>00519             <span class="comment">// Touche Entrer pressée</span>
<a name="l00520"></a>00520             <span class="keywordflow">case</span> PADENTER:
<a name="l00521"></a>00521             <span class="keywordflow">case</span> KEY_ENTER_bis: {
<a name="l00522"></a>00522                 <span class="keywordflow">if</span>( highLight == 1 ){<span class="comment">// On a selectionné un lien de modification de texte</span>
<a name="l00523"></a>00523                     <span class="keywordflow">do</span>{
<a name="l00524"></a>00524                         wattron(win_menu, COLOR_PAIR(MU_RED_BLACK));
<a name="l00525"></a>00525                         mvwaddstr(win_menu, 2, (getmaxx(win_menu)-29)/2, <span class="stringliteral">&quot;Entrez le nombre manuellement&quot;</span>);
<a name="l00526"></a>00526                         wattroff(win_menu, COLOR_PAIR(MU_RED_BLACK));
<a name="l00527"></a>00527 
<a name="l00528"></a>00528                         <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 3);
<a name="l00529"></a>00529                         mvwprintw(win_menu, 3, (getmaxx(win_menu)-8-<a class="code" href="outils_8cpp.html#ab0a855d1eae4c34ffa5b7805b268dbbe" title="Calcule la longueur d&amp;#39;un nombre.">getTailleNombre</a>(*returnValue))/2, <span class="stringliteral">&quot;&lt;-- %d --&gt;&quot;</span>, *returnValue);
<a name="l00530"></a>00530                         wrefresh(win_menu);
<a name="l00531"></a>00531 
<a name="l00532"></a>00532                         key = wgetch(win_menu);<span class="comment">// On récup la nouvelle touche</span>
<a name="l00533"></a>00533 
<a name="l00534"></a>00534                         <span class="keywordflow">switch</span>( key )
<a name="l00535"></a>00535                         {
<a name="l00536"></a>00536                             <span class="keywordflow">case</span> KEY_RIGHT:
<a name="l00537"></a>00537                             <span class="keywordflow">case</span> KEY_UP: {
<a name="l00538"></a>00538                                 <span class="keywordflow">if</span>( *returnValue+1 &gt; valeurMax )
<a name="l00539"></a>00539                                     *returnValue = valeurMin;
<a name="l00540"></a>00540                                 <span class="keywordflow">else</span>
<a name="l00541"></a>00541                                     (*returnValue)++;
<a name="l00542"></a>00542                                 <span class="keywordflow">break</span>;
<a name="l00543"></a>00543                             }
<a name="l00544"></a>00544                             <span class="keywordflow">case</span> KEY_LEFT:
<a name="l00545"></a>00545                             <span class="keywordflow">case</span> KEY_DOWN: {
<a name="l00546"></a>00546                                 <span class="keywordflow">if</span>( *returnValue-1 &lt; valeurMin )
<a name="l00547"></a>00547                                     *returnValue = valeurMax;
<a name="l00548"></a>00548                                 <span class="keywordflow">else</span>
<a name="l00549"></a>00549                                     (*returnValue)--;
<a name="l00550"></a>00550                                 <span class="keywordflow">break</span>;
<a name="l00551"></a>00551                             }
<a name="l00552"></a>00552                             <span class="keywordflow">case</span> KEY_BACKSPACE:
<a name="l00553"></a>00553                             <span class="keywordflow">case</span> KEY_BACKSPACE_bis: {
<a name="l00554"></a>00554                                 *returnValue /= 10;
<a name="l00555"></a>00555                                 <span class="keywordflow">break</span>;
<a name="l00556"></a>00556                             }
<a name="l00557"></a>00557                             <span class="keywordflow">case</span> KEY_ESCAP: {
<a name="l00558"></a>00558                                 *returnValue = valeurParDefaut;
<a name="l00559"></a>00559                                 <span class="keywordflow">break</span>;
<a name="l00560"></a>00560                             }
<a name="l00561"></a>00561                             <span class="keywordflow">case</span> PADENTER:
<a name="l00562"></a>00562                             <span class="keywordflow">case</span> KEY_ENTER_bis: {
<a name="l00563"></a>00563                                 <span class="keywordflow">if</span>( !(valeurMin &lt;= *returnValue &amp;&amp; *returnValue &lt;= valeurMax) ){
<a name="l00564"></a>00564                                     key = 0;
<a name="l00565"></a>00565                                     *returnValue = valeurMin;
<a name="l00566"></a>00566                                 }
<a name="l00567"></a>00567                                 <span class="keywordflow">break</span>;
<a name="l00568"></a>00568                             }
<a name="l00569"></a>00569 <span class="preprocessor">                            #if defined(WIN32) || defined(WIN64)// Windows gère différament le &#39;+&#39; et le &#39;-&#39; s&#39;ils sont sur le pad ou pas...</span>
<a name="l00570"></a>00570 <span class="preprocessor"></span>                            <span class="keywordflow">case</span> PADPLUS:
<a name="l00571"></a>00571                             <span class="keywordflow">case</span> PADMINUS:
<a name="l00572"></a>00572 <span class="preprocessor">                            #endif</span>
<a name="l00573"></a>00573 <span class="preprocessor"></span>                            <span class="keywordflow">case</span> <span class="charliteral">&#39;+&#39;</span>:
<a name="l00574"></a>00574                             <span class="keywordflow">case</span> <span class="charliteral">&#39;-&#39;</span>: {
<a name="l00575"></a>00575                                 <span class="keywordflow">if</span>( valeurMin &lt;= *returnValue*(-1) &amp;&amp; *returnValue*(-1) &lt;= valeurMax )
<a name="l00576"></a>00576                                     *returnValue *= -1;
<a name="l00577"></a>00577                                 <span class="keywordflow">break</span>;
<a name="l00578"></a>00578                             }
<a name="l00579"></a>00579                             <span class="keywordflow">default</span>: {
<a name="l00580"></a>00580                                 <span class="comment">// Ajout de chiffre à la main</span>
<a name="l00581"></a>00581                                 <span class="keywordflow">if</span>( <span class="charliteral">&#39;0&#39;</span> &lt;= key &amp;&amp; key &lt;= <span class="charliteral">&#39;9&#39;</span> &amp;&amp; *returnValue*10+(key-<span class="charliteral">&#39;0&#39;</span>) &lt;= valeurMax )
<a name="l00582"></a>00582                                     *returnValue = *returnValue*10+(key-<span class="charliteral">&#39;0&#39;</span>);
<a name="l00583"></a>00583                                 <span class="keywordflow">break</span>;
<a name="l00584"></a>00584                             }
<a name="l00585"></a>00585                         }
<a name="l00586"></a>00586                     }<span class="keywordflow">while</span>( key != KEY_ESCAP &amp;&amp; key != KEY_ENTER_bis &amp;&amp; key != PADENTER );
<a name="l00587"></a>00587                     <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 2);
<a name="l00588"></a>00588                     key = 0;<span class="comment">// Pas d&#39;exit du menu accidentel</span>
<a name="l00589"></a>00589                 }
<a name="l00590"></a>00590                 <span class="keywordflow">if</span>( highLight == 3 )<span class="comment">// On a selectionné &quot;Retour&quot;</span>
<a name="l00591"></a>00591                     key = KEY_ESCAP;<span class="comment">// Donc on quit.</span>
<a name="l00592"></a>00592 
<a name="l00593"></a>00593                 <span class="keywordflow">break</span>;
<a name="l00594"></a>00594             }
<a name="l00595"></a>00595 
<a name="l00596"></a>00596             <span class="keywordflow">case</span> KEY_ESCAP:
<a name="l00597"></a>00597                 highLight = 3;
<a name="l00598"></a>00598                 <span class="keywordflow">break</span>;
<a name="l00599"></a>00599 
<a name="l00600"></a>00600             <span class="keywordflow">default</span>:
<a name="l00601"></a>00601                 <span class="keywordflow">break</span>;
<a name="l00602"></a>00602         }
<a name="l00603"></a>00603     }<span class="keywordflow">while</span>( key != KEY_ESCAP &amp;&amp; !((key == KEY_ENTER_bis || key == PADENTER) &amp;&amp; highLight == 2) );
<a name="l00604"></a>00604 
<a name="l00605"></a>00605     delwin(win_menu);
<a name="l00606"></a>00606 
<a name="l00607"></a>00607     <span class="keywordflow">return</span> highLight;
<a name="l00608"></a>00608 }
<a name="l00609"></a>00609 
<a name="l00610"></a>00610 
<a name="l00611"></a>00611 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00612"></a>00612 <span class="comment">* @fn int moteur_ncurses::getTexte( const char titre[], char texteRetour[21] )</span>
<a name="l00613"></a>00613 <span class="comment">* @brief Permet d&#39;obtenir du texte</span>
<a name="l00614"></a>00614 <span class="comment">* @param[in] titre              Le titre du menu</span>
<a name="l00615"></a>00615 <span class="comment">* @param[out] texteRetour       Dans cette variable sera stocké, le texte obtenu a la fin de la fonction</span>
<a name="l00616"></a>00616 <span class="comment">* @return</span>
<a name="l00617"></a>00617 <span class="comment">*   - 2 : Texte validé et accèpté</span>
<a name="l00618"></a>00618 <span class="comment">*   - 3 : Action annulée</span>
<a name="l00619"></a>00619 <span class="comment">*/</span>
<a name="l00620"></a><a class="code" href="classmoteur__ncurses.html#a20d01f1da6e4e378673df3f550e57bae">00620</a> <span class="keywordtype">int</span> <a class="code" href="classmoteur__ncurses.html#a20d01f1da6e4e378673df3f550e57bae" title="Permet d&amp;#39;obtenir du texte.">moteur_ncurses::getTexte</a>( <span class="keyword">const</span> <span class="keywordtype">char</span> titre[], <span class="keywordtype">char</span> texteRetour[21] )
<a name="l00621"></a>00621 {
<a name="l00622"></a>00622     <span class="keywordtype">int</span> key=0;
<a name="l00623"></a>00623     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    titre_taille = strlen(titre),
<a name="l00624"></a>00624                     highLight=1;
<a name="l00625"></a>00625     WINDOW* win_menu = 0;
<a name="l00626"></a>00626     <span class="keywordtype">bool</span> erreurTexteVide = 0;
<a name="l00627"></a>00627 
<a name="l00628"></a>00628     <span class="comment">// On affiche le super cadre :D</span>
<a name="l00629"></a>00629     <a class="code" href="classmoteur__ncurses.html#aa5d8fae6272f29e7fc0981a988b71a49" title="Affiche un cadre au tour (interieur) de la fenêtre.">cadre</a>();
<a name="l00630"></a>00630 
<a name="l00631"></a>00631     win_menu = newwin(8<span class="comment">/*HEIGHT*/</span>, 40<span class="comment">/*WIDTH*/</span>, (getmaxy(stdscr)-8)/2, (getmaxx(stdscr)-40)/2);
<a name="l00632"></a>00632     keypad(win_menu, TRUE); <span class="comment">/* Pour que les flèches, F1, ... soient traitées (il faut le faire après création de la fenêtre) */</span>
<a name="l00633"></a>00633 
<a name="l00634"></a>00634     <span class="comment">/***************************************************************************</span>
<a name="l00635"></a>00635 <span class="comment">    * Boucle EVENT</span>
<a name="l00636"></a>00636 <span class="comment">    */</span>
<a name="l00637"></a>00637     <span class="keywordflow">do</span>{
<a name="l00638"></a>00638         <span class="comment">// Création d&#39;une boite</span>
<a name="l00639"></a>00639         box(win_menu, 0, 0);
<a name="l00640"></a>00640 
<a name="l00641"></a>00641         <span class="comment">// Affichage du titre</span>
<a name="l00642"></a>00642         mvwaddstr(win_menu, 1, (getmaxx(win_menu)-titre_taille)/2, titre);
<a name="l00643"></a>00643 
<a name="l00644"></a>00644         <span class="comment">// Affichage erreur</span>
<a name="l00645"></a>00645         <span class="keywordflow">if</span>( erreurTexteVide ){
<a name="l00646"></a>00646             wattron(win_menu, COLOR_PAIR(MU_RED_BLACK));
<a name="l00647"></a>00647             mvwaddstr(win_menu, 2, (getmaxx(win_menu)-35)/2, <span class="stringliteral">&quot;Le texte dois avoir 1 caractere min&quot;</span>);
<a name="l00648"></a>00648             wattroff(win_menu, COLOR_PAIR(MU_RED_BLACK));
<a name="l00649"></a>00649         }
<a name="l00650"></a>00650 
<a name="l00651"></a>00651         <span class="comment">/************************************************************************</span>
<a name="l00652"></a>00652 <span class="comment">        * Affichage du menu</span>
<a name="l00653"></a>00653 <span class="comment">        */</span>
<a name="l00654"></a>00654         <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 3);
<a name="l00655"></a>00655         <span class="comment">// Le texte en cours de modification</span>
<a name="l00656"></a>00656         <span class="keywordflow">if</span>( highLight == 1 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00657"></a>00657             wattron(win_menu, A_REVERSE);
<a name="l00658"></a>00658             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 3);
<a name="l00659"></a>00659             mvwaddch(win_menu, 3, 2, ACS_RARROW);
<a name="l00660"></a>00660             mvwprintw(win_menu, 3, (getmaxx(win_menu)-strlen(texteRetour))/2, <span class="stringliteral">&quot;%s&quot;</span>, texteRetour);
<a name="l00661"></a>00661             wattroff(win_menu, A_REVERSE);
<a name="l00662"></a>00662         }<span class="keywordflow">else</span>{
<a name="l00663"></a>00663             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 3);
<a name="l00664"></a>00664             mvwaddch(win_menu, 3, 2, ACS_RARROW);
<a name="l00665"></a>00665             mvwprintw(win_menu, 3, (getmaxx(win_menu)-strlen(texteRetour))/2, <span class="stringliteral">&quot;%s&quot;</span>, texteRetour);
<a name="l00666"></a>00666         }
<a name="l00667"></a>00667         <span class="comment">// Lien de pour valider le choix</span>
<a name="l00668"></a>00668         <span class="keywordflow">if</span>( highLight == 2 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00669"></a>00669             wattron(win_menu, A_REVERSE);
<a name="l00670"></a>00670             mvwaddstr(win_menu, 4, 2, <span class="stringliteral">&quot;Ok&quot;</span>);
<a name="l00671"></a>00671             wattroff(win_menu, A_REVERSE);
<a name="l00672"></a>00672         }<span class="keywordflow">else</span>{
<a name="l00673"></a>00673             mvwaddstr(win_menu, 4, 2, <span class="stringliteral">&quot;Ok&quot;</span>);
<a name="l00674"></a>00674         }
<a name="l00675"></a>00675         <span class="comment">// Lien de retour</span>
<a name="l00676"></a>00676         <span class="keywordflow">if</span>( highLight == 3 ){ <span class="comment">/* High light the present choice */</span>
<a name="l00677"></a>00677             wattron(win_menu, A_REVERSE);
<a name="l00678"></a>00678             mvwaddstr(win_menu, 5, 2, <span class="stringliteral">&quot;Retour&quot;</span>);
<a name="l00679"></a>00679             wattroff(win_menu, A_REVERSE);
<a name="l00680"></a>00680         }<span class="keywordflow">else</span>{
<a name="l00681"></a>00681             mvwaddstr(win_menu, 5, 2, <span class="stringliteral">&quot;Retour&quot;</span>);
<a name="l00682"></a>00682         }
<a name="l00683"></a>00683 
<a name="l00684"></a>00684         wrefresh(win_menu);
<a name="l00685"></a>00685 
<a name="l00686"></a>00686 
<a name="l00687"></a>00687         <span class="comment">/************************************************************************</span>
<a name="l00688"></a>00688 <span class="comment">        * EVENT</span>
<a name="l00689"></a>00689 <span class="comment">        */</span>
<a name="l00690"></a>00690         key = wgetch(win_menu);
<a name="l00691"></a>00691         <span class="keywordflow">switch</span>( key )
<a name="l00692"></a>00692         {
<a name="l00693"></a>00693             <span class="keywordflow">case</span> KEY_UP:
<a name="l00694"></a>00694                 <span class="keywordflow">if</span>( highLight == 1 )
<a name="l00695"></a>00695                     highLight = 3;
<a name="l00696"></a>00696                 <span class="keywordflow">else</span>
<a name="l00697"></a>00697                     --highLight;
<a name="l00698"></a>00698                 <span class="keywordflow">break</span>;
<a name="l00699"></a>00699 
<a name="l00700"></a>00700             <span class="keywordflow">case</span> KEY_DOWN:
<a name="l00701"></a>00701                 <span class="keywordflow">if</span>( highLight == 3 )
<a name="l00702"></a>00702                     highLight = 1;
<a name="l00703"></a>00703                 <span class="keywordflow">else</span>
<a name="l00704"></a>00704                     ++highLight;
<a name="l00705"></a>00705                 <span class="keywordflow">break</span>;
<a name="l00706"></a>00706 
<a name="l00707"></a>00707             <span class="comment">// Touche Entrer pressée</span>
<a name="l00708"></a>00708             <span class="keywordflow">case</span> PADENTER:
<a name="l00709"></a>00709             <span class="keywordflow">case</span> KEY_ENTER_bis: {
<a name="l00710"></a>00710                 <span class="keywordflow">if</span>( highLight == 1 ){<span class="comment">// On a selectionné un lien de modification de texte</span>
<a name="l00711"></a>00711                     <span class="keywordflow">do</span>{
<a name="l00712"></a>00712                         <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 2);
<a name="l00713"></a>00713                         wattron(win_menu, COLOR_PAIR(MU_RED_BLACK));
<a name="l00714"></a>00714                         mvwaddstr(win_menu, 2, (getmaxx(win_menu)-18)/2, <span class="stringliteral">&quot;Entrez votre texte&quot;</span>);
<a name="l00715"></a>00715                         wattroff(win_menu, COLOR_PAIR(MU_RED_BLACK));
<a name="l00716"></a>00716 
<a name="l00717"></a>00717                         wattron(win_menu, A_REVERSE);
<a name="l00718"></a>00718                         <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 3);
<a name="l00719"></a>00719                         mvwprintw(win_menu, 3, (getmaxx(win_menu)-strlen(texteRetour))/2, <span class="stringliteral">&quot;%s&quot;</span>, texteRetour);
<a name="l00720"></a>00720                         wattroff(win_menu, A_REVERSE);
<a name="l00721"></a>00721                         wrefresh(win_menu);
<a name="l00722"></a>00722 
<a name="l00723"></a>00723                         key = wgetch(win_menu);<span class="comment">// On récup la nouvelle touche</span>
<a name="l00724"></a>00724 
<a name="l00725"></a>00725                         <span class="keywordflow">switch</span>( key )
<a name="l00726"></a>00726                         {
<a name="l00727"></a>00727                             <span class="keywordflow">case</span> KEY_BACKSPACE:
<a name="l00728"></a>00728                             <span class="keywordflow">case</span> KEY_BACKSPACE_bis: {
<a name="l00729"></a>00729                                 <span class="keywordflow">if</span>( strlen(texteRetour) &gt; 0 )
<a name="l00730"></a>00730                                     texteRetour[strlen(texteRetour)-1] = 0;
<a name="l00731"></a>00731                                 <span class="keywordflow">break</span>;
<a name="l00732"></a>00732                             }
<a name="l00733"></a>00733                             <span class="keywordflow">case</span> PADENTER:
<a name="l00734"></a>00734                             <span class="keywordflow">case</span> KEY_ENTER_bis: {
<a name="l00735"></a>00735                                 <a class="code" href="outils_8cpp.html#a867f58846060922b50a272361337cc96" title="Vire les espaces avant et après une chaine de caractère.">trimString</a>(texteRetour);
<a name="l00736"></a>00736                                 erreurTexteVide = 0;
<a name="l00737"></a>00737                                 <span class="keywordflow">break</span>;
<a name="l00738"></a>00738                             }
<a name="l00739"></a>00739                             <span class="keywordflow">default</span>: {
<a name="l00740"></a>00740                                 <span class="comment">// Ajout d&#39;une lettre à la main</span>
<a name="l00741"></a>00741                                 <span class="keywordflow">if</span>( <span class="charliteral">&#39; &#39;</span> &lt;= key &amp;&amp; key &lt;= <span class="charliteral">&#39;~&#39;</span> &amp;&amp; strlen(texteRetour)+1 &lt; 20 ){<span class="comment">// NOTE: 21 = &#39;\0&#39;</span>
<a name="l00742"></a>00742                                     texteRetour[strlen(texteRetour)+1] = 0;
<a name="l00743"></a>00743                                     texteRetour[strlen(texteRetour)] = key;
<a name="l00744"></a>00744                                 }
<a name="l00745"></a>00745                                 <span class="keywordflow">break</span>;
<a name="l00746"></a>00746                             }
<a name="l00747"></a>00747                         }
<a name="l00748"></a>00748                     }<span class="keywordflow">while</span>( key != KEY_ESCAP &amp;&amp; key != KEY_ENTER_bis &amp;&amp; key != PADENTER );
<a name="l00749"></a>00749                     <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win_menu, 2);
<a name="l00750"></a>00750                     <span class="keywordflow">if</span>( strlen(<a class="code" href="outils_8cpp.html#a867f58846060922b50a272361337cc96" title="Vire les espaces avant et après une chaine de caractère.">trimString</a>(texteRetour)) ){<span class="comment">// IL FAUT AU MOINS 1 CARACTRERES</span>
<a name="l00751"></a>00751                         highLight = 2;<span class="comment">// On déplace sur le ok le cursor</span>
<a name="l00752"></a>00752                     }
<a name="l00753"></a>00753                     key = 0;<span class="comment">// Pas d&#39;exit du menu accidentel</span>
<a name="l00754"></a>00754                 }<span class="keywordflow">else</span>{
<a name="l00755"></a>00755                     <span class="keywordflow">if</span>( highLight == 2 ){
<a name="l00756"></a>00756                         <span class="keywordflow">if</span>( strlen(<a class="code" href="outils_8cpp.html#a867f58846060922b50a272361337cc96" title="Vire les espaces avant et après une chaine de caractère.">trimString</a>(texteRetour)) &lt; 1 ){
<a name="l00757"></a>00757                             <span class="comment">// IL FAUT AU MOINS 1 CARACTRERES</span>
<a name="l00758"></a>00758                             erreurTexteVide = 1;
<a name="l00759"></a>00759                             key = 0;
<a name="l00760"></a>00760                         }
<a name="l00761"></a>00761                     }<span class="keywordflow">else</span>{<span class="comment">// highLight == 3 )// On a selectionné &quot;Retour&quot;</span>
<a name="l00762"></a>00762                         key = KEY_ESCAP;<span class="comment">// Donc on quit.</span>
<a name="l00763"></a>00763                     }
<a name="l00764"></a>00764                 }
<a name="l00765"></a>00765                 <span class="keywordflow">break</span>;
<a name="l00766"></a>00766             }
<a name="l00767"></a>00767 
<a name="l00768"></a>00768             <span class="keywordflow">case</span> KEY_ESCAP:
<a name="l00769"></a>00769                 highLight = 3;
<a name="l00770"></a>00770                 <span class="keywordflow">break</span>;
<a name="l00771"></a>00771 
<a name="l00772"></a>00772             <span class="keywordflow">default</span>:
<a name="l00773"></a>00773                 <span class="keywordflow">break</span>;
<a name="l00774"></a>00774         }
<a name="l00775"></a>00775     }<span class="keywordflow">while</span>( key != KEY_ESCAP &amp;&amp; !((key == KEY_ENTER_bis || key == PADENTER) &amp;&amp; highLight == 2) );
<a name="l00776"></a>00776 
<a name="l00777"></a>00777     delwin(win_menu);
<a name="l00778"></a>00778 
<a name="l00779"></a>00779     <span class="keywordflow">return</span> highLight;
<a name="l00780"></a>00780 }
<a name="l00781"></a>00781 
<a name="l00782"></a>00782 
<a name="l00783"></a>00783 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00784"></a>00784 <span class="comment">* @fn void moteur_ncurses::cleanline( WINDOW* win, int y, int x_begin, int x_end )</span>
<a name="l00785"></a>00785 <span class="comment">* @brief Permet d&#39;effacer une ligne</span>
<a name="l00786"></a>00786 <span class="comment">* @fn void moteur_ncurses::cleanline( WINDOW* win, int y );</span>
<a name="l00787"></a>00787 <span class="comment">* @brief Alias de cleanline( win, y, 1, getmaxx(win)-2 );</span>
<a name="l00788"></a>00788 <span class="comment">*/</span>
<a name="l00789"></a><a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c">00789</a> <span class="keywordtype">void</span> <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">moteur_ncurses::cleanline</a>( WINDOW* win, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> x_begin, <span class="keywordtype">int</span> x_end )
<a name="l00790"></a>00790 {
<a name="l00791"></a>00791     <span class="keywordflow">if</span>( x_begin &gt; x_end )
<a name="l00792"></a>00792         stdErrorE(<span class="stringliteral">&quot;Taille incorrect x_begin(=%d) &gt; x_end(=%d)&quot;</span>, x_begin, x_end);
<a name="l00793"></a>00793 
<a name="l00794"></a>00794     <span class="keywordflow">for</span>( <span class="keywordtype">int</span> x=x_begin; x&lt;=x_end; x++ )
<a name="l00795"></a>00795         mvwaddch(win, y, x, <span class="charliteral">&#39; &#39;</span>);
<a name="l00796"></a>00796 }
<a name="l00797"></a>00797 
<a name="l00798"></a>00798 
<a name="l00799"></a>00799 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00800"></a>00800 <span class="comment">* @fn chtype moteur_ncurses::getCouleurJoueur( unsigned char joueur )</span>
<a name="l00801"></a>00801 <span class="comment">* @brief Renvoie la couleur d&#39;un joueur</span>
<a name="l00802"></a>00802 <span class="comment">* @param[in] joueur Numéro du joueur de 1 à ...</span>
<a name="l00803"></a>00803 <span class="comment">* @return Renvoie la couleur à utiliser ( couleur directement utilisable dans wattron() )</span>
<a name="l00804"></a>00804 <span class="comment">*</span>
<a name="l00805"></a>00805 <span class="comment">* Exemple:</span>
<a name="l00806"></a>00806 <span class="comment">* @code</span>
<a name="l00807"></a>00807 <span class="comment">* wattron(win, getCouleurJoueur( 1 ));</span>
<a name="l00808"></a>00808 <span class="comment">* @endcode</span>
<a name="l00809"></a>00809 <span class="comment">*</span>
<a name="l00810"></a>00810 <span class="comment">* @note Si le numéro de joueur n&#39;a pas de correspondance, alors :</span>
<a name="l00811"></a>00811 <span class="comment">* - un message d&#39;erreur ( sur le cannal d&#39;erreur ) est envoyé</span>
<a name="l00812"></a>00812 <span class="comment">* - La couleur blanche sera utilisée</span>
<a name="l00813"></a>00813 <span class="comment">*/</span>
<a name="l00814"></a><a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d">00814</a> chtype <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">moteur_ncurses::getCouleurJoueur</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> joueur )
<a name="l00815"></a>00815 {
<a name="l00816"></a>00816     <span class="keywordflow">switch</span>( joueur )
<a name="l00817"></a>00817     {
<a name="l00818"></a>00818         <span class="keywordflow">case</span> 1:
<a name="l00819"></a>00819             <span class="keywordflow">return</span> COLOR_PAIR(MU_JOUEUR1);
<a name="l00820"></a>00820         <span class="keywordflow">case</span> 2:
<a name="l00821"></a>00821             <span class="keywordflow">return</span> COLOR_PAIR(MU_JOUEUR2);
<a name="l00822"></a>00822         <span class="keywordflow">case</span> 3:
<a name="l00823"></a>00823             <span class="keywordflow">return</span> COLOR_PAIR(MU_JOUEUR3);
<a name="l00824"></a>00824         <span class="keywordflow">case</span> 4:
<a name="l00825"></a>00825             <span class="keywordflow">return</span> COLOR_PAIR(MU_JOUEUR4);
<a name="l00826"></a>00826         <span class="keywordflow">default</span>: {
<a name="l00827"></a>00827             stdError(<span class="stringliteral">&quot;Problème d&#39;id joueur ! id_joueur=%d&quot;</span>, joueur);
<a name="l00828"></a>00828             <span class="keywordflow">return</span> COLOR_PAIR(MU_WHITE_BLACK);
<a name="l00829"></a>00829         }
<a name="l00830"></a>00830     }
<a name="l00831"></a>00831     <span class="keywordflow">return</span> COLOR_PAIR(MU_JOUEUR4);
<a name="l00832"></a>00832 }
<a name="l00833"></a>00833 
<a name="l00834"></a>00834 
<a name="l00835"></a>00835 <span class="comment">/***************************************************************************/</span><span class="comment">/*!</span>
<a name="l00836"></a>00836 <span class="comment">* @fn SYS_CLAVIER moteur_ncurses::afficherMapEtEvent( partie* p )</span>
<a name="l00837"></a>00837 <span class="comment">* @brief Affiche une map</span>
<a name="l00838"></a>00838 <span class="comment">* @param[in] p  La partie en cours a afficher</span>
<a name="l00839"></a>00839 <span class="comment">* @return La touche actuellement appuyé</span>
<a name="l00840"></a>00840 <span class="comment">*/</span>
<a name="l00841"></a><a class="code" href="classmoteur__ncurses.html#a4befeea46ae3cc1fd4fa76164f02a8c2">00841</a> SYS_CLAVIER <a class="code" href="classmoteur__ncurses.html#a4befeea46ae3cc1fd4fa76164f02a8c2" title="Affiche une map.">moteur_ncurses::afficherMapEtEvent</a>( <a class="code" href="classpartie.html" title="Permet de gérer une partie offline ou online ( host et client ).">partie</a>* p )
<a name="l00842"></a>00842 {
<a name="l00843"></a>00843     <a class="code" href="classmap.html" title="Gère une map.">map</a>* l_map = p-&gt;<a class="code" href="classpartie.html#ae1902153955d80b676fe96ef395e58c5" title="Renvoie la map actuel.">getMap</a>();<span class="comment">// l_map pour local variable map</span>
<a name="l00844"></a>00844     <span class="comment">// Décalage</span>
<a name="l00845"></a>00845     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>    xpos=(getmaxx(stdscr)-l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>())/2,
<a name="l00846"></a>00846                     ypos=(getmaxy(stdscr)-l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>())/2;
<a name="l00847"></a>00847     <span class="comment">// Fenetre d&#39;affichage</span>
<a name="l00848"></a>00848     WINDOW* win = stdscr;
<a name="l00849"></a>00849 
<a name="l00850"></a>00850     <span class="comment">// Sert à afficher les couleurs pour les joueurs</span>
<a name="l00851"></a>00851     chtype couleur;
<a name="l00852"></a>00852 
<a name="l00853"></a>00853     <span class="keywordflow">if</span>( (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)getmaxx(stdscr) &lt; l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>() || (<span class="keywordtype">unsigned</span> int)getmaxy(stdscr) &lt; l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>() )
<a name="l00854"></a>00854         stdErrorE(<span class="stringliteral">&quot;La map est trop grande pour l&#39;affichage ! SCREEN:(Xmax=%d, Ymax=%d), MAP:(Xmax=%u, Ymax=%u)&quot;</span>, getmaxx(stdscr), getmaxy(stdscr), l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>(), l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>());
<a name="l00855"></a>00855 
<a name="l00856"></a>00856     <span class="comment">//halfdelay( 2 );</span>
<a name="l00857"></a>00857     <span class="comment">//notimeout( c_win, true );</span>
<a name="l00858"></a>00858     <span class="comment">//wtimeout( c_win, 500 );</span>
<a name="l00859"></a>00859     <span class="comment">//nodelay( stdscr, true );</span>
<a name="l00860"></a>00860 
<a name="l00861"></a>00861     <span class="keywordflow">if</span>( <a class="code" href="classmoteur__ncurses.html#a80ff5f97779c081cf278601e0e77757a">c_premierAffichage</a> ){
<a name="l00862"></a>00862         attron(COLOR_PAIR(MU_YELLOW_BLACK));
<a name="l00863"></a>00863         mvwaddstr(stdscr, 1, (getmaxx(stdscr)-9)/2, <span class="stringliteral">&quot;Bomberman&quot;</span>);<span class="comment">// -9 pour la taille de &quot;Bomberman&quot;</span>
<a name="l00864"></a>00864         attroff(COLOR_PAIR(MU_YELLOW_BLACK));
<a name="l00865"></a>00865         box(stdscr, 0, 0);
<a name="l00866"></a>00866         refresh(); <span class="comment">/* Print it on to the real screen */</span>
<a name="l00867"></a>00867 
<a name="l00868"></a>00868         <span class="keywordflow">for</span>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x,y=0; y&lt;l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>(); y++ )
<a name="l00869"></a>00869         {
<a name="l00870"></a>00870             <span class="keywordflow">for</span>( x=0; x&lt;l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>(); x++ )
<a name="l00871"></a>00871             {
<a name="l00872"></a>00872                 <span class="keywordflow">switch</span>( l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;element )
<a name="l00873"></a>00873                 {
<a name="l00874"></a>00874                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba508b0ad2c59b8c654beb73d2239c8e74">map::vide</a>: {
<a name="l00875"></a>00875                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39; &#39;</span>);
<a name="l00876"></a>00876                         <span class="keywordflow">break</span>;
<a name="l00877"></a>00877                     }
<a name="l00878"></a>00878                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469bac6281d911da21f4bb566114037266055">map::Mur_destructible</a>: {
<a name="l00879"></a>00879                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;%&#39;</span>);
<a name="l00880"></a>00880                         <span class="keywordflow">break</span>;
<a name="l00881"></a>00881                     }
<a name="l00882"></a>00882                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba1bae257451fe92ef4fafd02fed56a850">map::Mur_INdestructible</a>: {
<a name="l00883"></a>00883                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;#&#39;</span>);
<a name="l00884"></a>00884                         <span class="keywordflow">break</span>;
<a name="l00885"></a>00885                     }
<a name="l00886"></a>00886                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba4829d7f791fe2537aaa05edf28cc6630">map::UN_joueur</a>:
<a name="l00887"></a>00887                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469baa94a2d9d84a636b26e656df3e5ae16b8">map::plusieurs_joueurs</a>: {
<a name="l00888"></a>00888                         <span class="keywordflow">if</span>( !l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;joueur )
<a name="l00889"></a>00889                             stdErrorE(<span class="stringliteral">&quot;POINTEUR NULL !X=%u, Y=%u, l_map-&gt;getBlock(x,y)-&gt;joueur=0&quot;</span>, x, y);
<a name="l00890"></a>00890 
<a name="l00891"></a>00891                         couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;joueur-&gt;at(0) );
<a name="l00892"></a>00892                         wattron(win, couleur);
<a name="l00893"></a>00893                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;@&#39;</span>);
<a name="l00894"></a>00894                         wattroff(win, couleur);
<a name="l00895"></a>00895 
<a name="l00896"></a>00896                         <span class="keywordflow">break</span>;
<a name="l00897"></a>00897                     }
<a name="l00898"></a>00898                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba00a358d27f9818438d9bd9b8e882fb2d">map::bombe_poser</a>: {
<a name="l00899"></a>00899                         couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;joueur-&gt;at(0) );
<a name="l00900"></a>00900                         wattron(win, couleur);
<a name="l00901"></a>00901                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;!&#39;</span>);
<a name="l00902"></a>00902                         wattroff(win, couleur);
<a name="l00903"></a>00903                         <span class="keywordflow">break</span>;
<a name="l00904"></a>00904                     }
<a name="l00905"></a>00905                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba278e9245c0e1cfb455511d27114dc830">map::bombe_poser_AVEC_UN_joueur</a>:
<a name="l00906"></a>00906                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba7eeb793973ee8e2ce702d82fbcd9d759">map::bombe_poser_AVEC_plusieurs_joueurs</a>: {
<a name="l00907"></a>00907                         <span class="keywordflow">if</span>( !l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;joueur )
<a name="l00908"></a>00908                             stdErrorE(<span class="stringliteral">&quot;POINTEUR NULL !X=%u, Y=%u, l_map-&gt;getBlock(x,y).joueur=0&quot;</span>, x, y);
<a name="l00909"></a>00909 
<a name="l00910"></a>00910                         couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;joueur-&gt;at(0) );
<a name="l00911"></a>00911                         wattron(win, couleur);
<a name="l00912"></a>00912                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;$&#39;</span>);
<a name="l00913"></a>00913                         wattroff(win, couleur);
<a name="l00914"></a>00914 
<a name="l00915"></a>00915                         <span class="keywordflow">break</span>;
<a name="l00916"></a>00916                     }
<a name="l00917"></a>00917                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469bac331e3cb1090bc086fc8aec8c40f8d90">map::flamme_origine</a>: {
<a name="l00918"></a>00918                         wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00919"></a>00919                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;O&#39;</span>);
<a name="l00920"></a>00920                         wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00921"></a>00921                         <span class="keywordflow">break</span>;
<a name="l00922"></a>00922                     }
<a name="l00923"></a>00923                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba0b01d857d4519d6da4b8833433a718d0">map::flamme_horizontal</a>:
<a name="l00924"></a>00924                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469bac2726a799ffd38fb4b89989f24d40e7e">map::flamme_vertical</a>: {
<a name="l00925"></a>00925                         wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00926"></a>00926                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;X&#39;</span>);
<a name="l00927"></a>00927                         wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00928"></a>00928                         <span class="keywordflow">break</span>;
<a name="l00929"></a>00929                     }
<a name="l00930"></a>00930                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469bab794750be41b582091eb2b4c480581e4">map::flamme_pointe_haut</a>: {
<a name="l00931"></a>00931                         wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00932"></a>00932                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;^&#39;</span>);
<a name="l00933"></a>00933                         wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00934"></a>00934                         <span class="keywordflow">break</span>;
<a name="l00935"></a>00935                     }
<a name="l00936"></a>00936                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba09c901a81e700c77bcd7886584f1c443">map::flamme_pointe_bas</a>: {
<a name="l00937"></a>00937                         wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00938"></a>00938                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;v&#39;</span>);
<a name="l00939"></a>00939                         wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00940"></a>00940                         <span class="keywordflow">break</span>;
<a name="l00941"></a>00941                     }
<a name="l00942"></a>00942                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba62944c1454be834def9f3dd83c71bfe1">map::flamme_pointe_droite</a>: {
<a name="l00943"></a>00943                         wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00944"></a>00944                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;&gt;&#39;</span>);
<a name="l00945"></a>00945                         wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00946"></a>00946                         <span class="keywordflow">break</span>;
<a name="l00947"></a>00947                     }
<a name="l00948"></a>00948                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba08c81a1be9eb74cd270ee9aba56122a7">map::flamme_pointe_gauche</a>: {
<a name="l00949"></a>00949                         wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00950"></a>00950                         mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;&lt;&#39;</span>);
<a name="l00951"></a>00951                         wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l00952"></a>00952                         <span class="keywordflow">break</span>;
<a name="l00953"></a>00953                     }
<a name="l00954"></a>00954                     <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba5bb1e9e4730d4ba08f3dab2921bfce00">map::bonus</a>: {
<a name="l00955"></a>00955                         wattron(win, COLOR_PAIR(MU_BLACK_MAGENTA));
<a name="l00956"></a>00956                         <span class="keywordflow">if</span>( !l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;joueur )
<a name="l00957"></a>00957                             stdErrorE(<span class="stringliteral">&quot;POINTEUR NULL !X=%u, Y=%u, l_map-&gt;getBlock(x,y).joueur=0&quot;</span>, x, y);
<a name="l00958"></a>00958                         <span class="keywordflow">switch</span>( (<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7ef" title="Les types de bonus possible dans le jeu.">bonus::t_Bonus</a>)l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;joueur-&gt;at(0) )
<a name="l00959"></a>00959                         {
<a name="l00960"></a>00960                             <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa5377d867e4dcd5d8e6656217d02fdc9f">bonus::bombe</a>: {
<a name="l00961"></a>00961                                 mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;!&#39;</span>);
<a name="l00962"></a>00962                                 <span class="keywordflow">break</span>;
<a name="l00963"></a>00963                             }
<a name="l00964"></a>00964                             <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa3758eac4c25825d7f7cb8f5ec4bc610e">bonus::puissance_flamme</a>: {
<a name="l00965"></a>00965                                 mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;O&#39;</span>);
<a name="l00966"></a>00966                                 <span class="keywordflow">break</span>;
<a name="l00967"></a>00967                             }
<a name="l00968"></a>00968                             <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efaf580f32a0c46beb866416ad197e19757">bonus::declancheur</a>: {
<a name="l00969"></a>00969                                 mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;D&#39;</span>);
<a name="l00970"></a>00970                                 <span class="keywordflow">break</span>;
<a name="l00971"></a>00971                             }
<a name="l00972"></a>00972                             <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efae2dd393722ba461c826db4bc25f044eb">bonus::pousse_bombe</a>: {
<a name="l00973"></a>00973                                 mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;P&#39;</span>);
<a name="l00974"></a>00974                                 <span class="keywordflow">break</span>;
<a name="l00975"></a>00975                             }
<a name="l00976"></a>00976                             <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa1246f4ca553bef6a133a81553cbb9b41">bonus::vie</a>: {
<a name="l00977"></a>00977                                 mvwaddch( win, ypos+y, xpos+x, <span class="charliteral">&#39;@&#39;</span>);
<a name="l00978"></a>00978                                 <span class="keywordflow">break</span>;
<a name="l00979"></a>00979                             }
<a name="l00980"></a>00980                             <span class="keywordflow">default</span>: {
<a name="l00981"></a>00981                                 stdError(<span class="stringliteral">&quot;Erreur lors de la lecture de la map, BONUS inconu &lt;%d&gt;&quot;</span>, (<span class="keywordtype">int</span>)l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;joueur-&gt;at(0));
<a name="l00982"></a>00982                                 <span class="keywordflow">break</span>;
<a name="l00983"></a>00983                             }
<a name="l00984"></a>00984                         }
<a name="l00985"></a>00985                         <span class="comment">//mvwaddch( win, ypos+y, xpos+x, &#39;?&#39;);</span>
<a name="l00986"></a>00986                         wattroff(win, COLOR_PAIR(MU_BLACK_MAGENTA));
<a name="l00987"></a>00987                         <span class="keywordflow">break</span>;
<a name="l00988"></a>00988                     }
<a name="l00989"></a>00989                     <span class="keywordflow">default</span>: {
<a name="l00990"></a>00990                         stdError(<span class="stringliteral">&quot;Erreur lors de la lecture de la map, Objet inconu &lt;%d&gt;&quot;</span>, (<span class="keywordtype">int</span>)l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(x,y)-&gt;element);
<a name="l00991"></a>00991                         <span class="keywordflow">break</span>;
<a name="l00992"></a>00992                     }
<a name="l00993"></a>00993                 }
<a name="l00994"></a>00994             }
<a name="l00995"></a>00995         }
<a name="l00996"></a>00996         <a class="code" href="classmoteur__ncurses.html#a80ff5f97779c081cf278601e0e77757a">c_premierAffichage</a> = <span class="keyword">false</span>;
<a name="l00997"></a>00997     }<span class="keywordflow">else</span>{
<a name="l00998"></a>00998         <a class="code" href="structs___coordonnees.html" title="struct de coordonnées ( x,y )">s_Coordonnees</a> pos;
<a name="l00999"></a>00999         <span class="keywordflow">while</span>( l_map-&gt;<a class="code" href="classmap.html#a3453f2495334983df3bbf1737908e25e" title="Retourne les positions X,Y des case modifiées depuis le dernier cycle.">getModifications</a>(pos) )
<a name="l01000"></a>01000         {
<a name="l01001"></a>01001             <span class="keywordflow">switch</span>( l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;element )
<a name="l01002"></a>01002             {
<a name="l01003"></a>01003                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba508b0ad2c59b8c654beb73d2239c8e74">map::vide</a>: {
<a name="l01004"></a>01004                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39; &#39;</span>);
<a name="l01005"></a>01005                     <span class="keywordflow">break</span>;
<a name="l01006"></a>01006                 }
<a name="l01007"></a>01007                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469bac6281d911da21f4bb566114037266055">map::Mur_destructible</a>: {
<a name="l01008"></a>01008                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;%&#39;</span>);
<a name="l01009"></a>01009                     <span class="keywordflow">break</span>;
<a name="l01010"></a>01010                 }
<a name="l01011"></a>01011                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba1bae257451fe92ef4fafd02fed56a850">map::Mur_INdestructible</a>: {
<a name="l01012"></a>01012                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;#&#39;</span>);
<a name="l01013"></a>01013                     <span class="keywordflow">break</span>;
<a name="l01014"></a>01014                 }
<a name="l01015"></a>01015                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba4829d7f791fe2537aaa05edf28cc6630">map::UN_joueur</a>:
<a name="l01016"></a>01016                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469baa94a2d9d84a636b26e656df3e5ae16b8">map::plusieurs_joueurs</a>: {
<a name="l01017"></a>01017                     <span class="keywordflow">if</span>( !l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;joueur )
<a name="l01018"></a>01018                         stdErrorE(<span class="stringliteral">&quot;POINTEUR NULL !X=%u, Y=%u, l_map-&gt;getBlock(pos)-&gt;joueur=0&quot;</span>, pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>);
<a name="l01019"></a>01019 
<a name="l01020"></a>01020                     couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;joueur-&gt;at(0) );
<a name="l01021"></a>01021                     wattron(win, couleur);
<a name="l01022"></a>01022                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;@&#39;</span>);
<a name="l01023"></a>01023                     wattroff(win, couleur);
<a name="l01024"></a>01024 
<a name="l01025"></a>01025                     <span class="keywordflow">break</span>;
<a name="l01026"></a>01026                 }
<a name="l01027"></a>01027                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba00a358d27f9818438d9bd9b8e882fb2d">map::bombe_poser</a>: {
<a name="l01028"></a>01028                     couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;joueur-&gt;at(0) );
<a name="l01029"></a>01029                     wattron(win, couleur);
<a name="l01030"></a>01030                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;!&#39;</span>);
<a name="l01031"></a>01031                     wattroff(win, couleur);
<a name="l01032"></a>01032                     <span class="keywordflow">break</span>;
<a name="l01033"></a>01033                 }
<a name="l01034"></a>01034                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba278e9245c0e1cfb455511d27114dc830">map::bombe_poser_AVEC_UN_joueur</a>:
<a name="l01035"></a>01035                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba7eeb793973ee8e2ce702d82fbcd9d759">map::bombe_poser_AVEC_plusieurs_joueurs</a>: {
<a name="l01036"></a>01036                     <span class="keywordflow">if</span>( !l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;joueur )
<a name="l01037"></a>01037                         stdErrorE(<span class="stringliteral">&quot;POINTEUR NULL !X=%u, Y=%u, l_map-&gt;getBlock(pos).joueur=0&quot;</span>, pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>);
<a name="l01038"></a>01038 
<a name="l01039"></a>01039                     couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;joueur-&gt;at(0) );
<a name="l01040"></a>01040                     wattron(win, couleur);
<a name="l01041"></a>01041                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;$&#39;</span>);
<a name="l01042"></a>01042                     wattroff(win, couleur);
<a name="l01043"></a>01043 
<a name="l01044"></a>01044                     <span class="keywordflow">break</span>;
<a name="l01045"></a>01045                 }
<a name="l01046"></a>01046                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469bac331e3cb1090bc086fc8aec8c40f8d90">map::flamme_origine</a>: {
<a name="l01047"></a>01047                     wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01048"></a>01048                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;O&#39;</span>);
<a name="l01049"></a>01049                     wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01050"></a>01050                     <span class="keywordflow">break</span>;
<a name="l01051"></a>01051                 }
<a name="l01052"></a>01052                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba0b01d857d4519d6da4b8833433a718d0">map::flamme_horizontal</a>:
<a name="l01053"></a>01053                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469bac2726a799ffd38fb4b89989f24d40e7e">map::flamme_vertical</a>: {
<a name="l01054"></a>01054                     wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01055"></a>01055                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;X&#39;</span>);
<a name="l01056"></a>01056                     wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01057"></a>01057                     <span class="keywordflow">break</span>;
<a name="l01058"></a>01058                 }
<a name="l01059"></a>01059                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469bab794750be41b582091eb2b4c480581e4">map::flamme_pointe_haut</a>: {
<a name="l01060"></a>01060                     wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01061"></a>01061                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;^&#39;</span>);
<a name="l01062"></a>01062                     wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01063"></a>01063                     <span class="keywordflow">break</span>;
<a name="l01064"></a>01064                 }
<a name="l01065"></a>01065                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba09c901a81e700c77bcd7886584f1c443">map::flamme_pointe_bas</a>: {
<a name="l01066"></a>01066                     wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01067"></a>01067                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;v&#39;</span>);
<a name="l01068"></a>01068                     wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01069"></a>01069                     <span class="keywordflow">break</span>;
<a name="l01070"></a>01070                 }
<a name="l01071"></a>01071                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba62944c1454be834def9f3dd83c71bfe1">map::flamme_pointe_droite</a>: {
<a name="l01072"></a>01072                     wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01073"></a>01073                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;&gt;&#39;</span>);
<a name="l01074"></a>01074                     wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01075"></a>01075                     <span class="keywordflow">break</span>;
<a name="l01076"></a>01076                 }
<a name="l01077"></a>01077                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba08c81a1be9eb74cd270ee9aba56122a7">map::flamme_pointe_gauche</a>: {
<a name="l01078"></a>01078                     wattron(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01079"></a>01079                     mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;&lt;&#39;</span>);
<a name="l01080"></a>01080                     wattroff(win, COLOR_PAIR(MU_BLACK_YELLOW));
<a name="l01081"></a>01081                     <span class="keywordflow">break</span>;
<a name="l01082"></a>01082                 }
<a name="l01083"></a>01083                 <span class="keywordflow">case</span> <a class="code" href="classmap.html#ae2a076bf152add89e510bca3428f469ba5bb1e9e4730d4ba08f3dab2921bfce00">map::bonus</a>: {
<a name="l01084"></a>01084                     wattron(win, COLOR_PAIR(MU_BLACK_MAGENTA));
<a name="l01085"></a>01085                     <span class="keywordflow">if</span>( !l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;joueur )
<a name="l01086"></a>01086                         stdErrorE(<span class="stringliteral">&quot;POINTEUR NULL !X=%u, Y=%u, l_map-&gt;getBlock(pos).joueur=0&quot;</span>, pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>);
<a name="l01087"></a>01087                     <span class="keywordflow">switch</span>( (<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7ef" title="Les types de bonus possible dans le jeu.">bonus::t_Bonus</a>)l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;joueur-&gt;at(0) )
<a name="l01088"></a>01088                     {
<a name="l01089"></a>01089                         <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa5377d867e4dcd5d8e6656217d02fdc9f">bonus::bombe</a>: {
<a name="l01090"></a>01090                             mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;!&#39;</span>);
<a name="l01091"></a>01091                             <span class="keywordflow">break</span>;
<a name="l01092"></a>01092                         }
<a name="l01093"></a>01093                         <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa3758eac4c25825d7f7cb8f5ec4bc610e">bonus::puissance_flamme</a>: {
<a name="l01094"></a>01094                             mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;O&#39;</span>);
<a name="l01095"></a>01095                             <span class="keywordflow">break</span>;
<a name="l01096"></a>01096                         }
<a name="l01097"></a>01097                         <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efaf580f32a0c46beb866416ad197e19757">bonus::declancheur</a>: {
<a name="l01098"></a>01098                             mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;D&#39;</span>);
<a name="l01099"></a>01099                             <span class="keywordflow">break</span>;
<a name="l01100"></a>01100                         }
<a name="l01101"></a>01101                         <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efae2dd393722ba461c826db4bc25f044eb">bonus::pousse_bombe</a>: {
<a name="l01102"></a>01102                             mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;P&#39;</span>);
<a name="l01103"></a>01103                             <span class="keywordflow">break</span>;
<a name="l01104"></a>01104                         }
<a name="l01105"></a>01105                         <span class="keywordflow">case</span> <a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa1246f4ca553bef6a133a81553cbb9b41">bonus::vie</a>: {
<a name="l01106"></a>01106                             mvwaddch( win, ypos+pos.<a class="code" href="structs___coordonnees.html#aaf8eb7cb396be8207c9c3c63a806de51">y</a>, xpos+pos.<a class="code" href="structs___coordonnees.html#a58e4c6bec574940d228bf0a1b8b6b308">x</a>, <span class="charliteral">&#39;@&#39;</span>);
<a name="l01107"></a>01107                             <span class="keywordflow">break</span>;
<a name="l01108"></a>01108                         }
<a name="l01109"></a>01109                         <span class="keywordflow">default</span>: {
<a name="l01110"></a>01110                             stdError(<span class="stringliteral">&quot;Erreur lors de la lecture de la map, BONUS inconu &lt;%d&gt;&quot;</span>, (<span class="keywordtype">int</span>)l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;joueur-&gt;at(0));
<a name="l01111"></a>01111                             <span class="keywordflow">break</span>;
<a name="l01112"></a>01112                         }
<a name="l01113"></a>01113                     }
<a name="l01114"></a>01114                     <span class="comment">//mvwaddch( win, ypos+pos.y, xpos+pos.x, &#39;?&#39;);</span>
<a name="l01115"></a>01115                     wattroff(win, COLOR_PAIR(MU_BLACK_MAGENTA));
<a name="l01116"></a>01116                     <span class="keywordflow">break</span>;
<a name="l01117"></a>01117                 }
<a name="l01118"></a>01118                 <span class="keywordflow">default</span>: {
<a name="l01119"></a>01119                     stdError(<span class="stringliteral">&quot;Erreur lors de la lecture de la map, Objet inconu &lt;%d&gt;&quot;</span>, (<span class="keywordtype">int</span>)l_map-&gt;<a class="code" href="classmap.html#a5ab949cacaad5148299aa70f55bb0c93" title="Retourn le block qui est à la position X, Y.">getBlock</a>(pos)-&gt;element);
<a name="l01120"></a>01120                     <span class="keywordflow">break</span>;
<a name="l01121"></a>01121                 }
<a name="l01122"></a>01122             }
<a name="l01123"></a>01123 
<a name="l01124"></a>01124         }
<a name="l01125"></a>01125     }
<a name="l01126"></a>01126 
<a name="l01127"></a>01127     <span class="comment">// Affichage du timer</span>
<a name="l01128"></a>01128     <span class="keywordflow">if</span>( p-&gt;<a class="code" href="classpartie.html#ab15f2837f87963336ba2f5e8feec1e44" title="Renvoie le temps de fin / mort subite. (Ne change pas en cours de partie).">timeOut</a>() &gt; clock() )
<a name="l01129"></a>01129         mvwprintw(win, 3, 2, <span class="stringliteral">&quot;Temps restant %02dmin:%02dsecs&quot;</span>, (p-&gt;<a class="code" href="classpartie.html#ab15f2837f87963336ba2f5e8feec1e44" title="Renvoie le temps de fin / mort subite. (Ne change pas en cours de partie).">timeOut</a>()-clock())/(CLOCKS_PER_SEC*60), ((p-&gt;<a class="code" href="classpartie.html#ab15f2837f87963336ba2f5e8feec1e44" title="Renvoie le temps de fin / mort subite. (Ne change pas en cours de partie).">timeOut</a>()-clock())%(CLOCKS_PER_SEC*60))/CLOCKS_PER_SEC);
<a name="l01130"></a>01130     <span class="keywordflow">else</span>
<a name="l01131"></a>01131         mvwaddstr(win, 3, 2, <span class="stringliteral">&quot;Temps restant 0min:0secs&quot;</span>);
<a name="l01132"></a>01132 
<a name="l01133"></a>01133 
<a name="l01134"></a>01134     <span class="comment">// Joueur 1</span>
<a name="l01135"></a>01135     couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( 1 );
<a name="l01136"></a>01136     wattron(win, couleur);
<a name="l01137"></a>01137     <span class="keywordflow">if</span>( (<span class="keywordtype">int</span>)xpos-26 &lt; 0 )
<a name="l01138"></a>01138         stdErrorE(<span class="stringliteral">&quot;Fenêtre trop petite pour afficher toutes les informations nécéssaire !&quot;</span>);
<a name="l01139"></a>01139 
<a name="l01140"></a>01140     mvwprintw(win, ypos, xpos-26, <span class="stringliteral">&quot;%s&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(0)-&gt;<a class="code" href="classperso.html#a815c8505a10a43da797e0424a0192f92" title="Renvoie le nom du personnage.">nom</a>()-&gt;c_str());
<a name="l01141"></a>01141     wattroff(win, couleur);
<a name="l01142"></a>01142     <span class="keywordflow">if</span>( p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(0)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>() &amp;&amp; p-&gt;<a class="code" href="classpartie.html#a54be3942d34eaa369cfe6a8430da639d" title="Renvoie le type de connection: Host, Local, None ( pas de connection ).">connection</a>() != partie::CNX_Client ){
<a name="l01143"></a>01143         mvwprintw(win, ypos+1, xpos-24, <span class="stringliteral">&quot;Nombre de bombe: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(0)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa5377d867e4dcd5d8e6656217d02fdc9f">bonus::bombe</a>));
<a name="l01144"></a>01144         mvwprintw(win, ypos+2, xpos-24, <span class="stringliteral">&quot;Puissance de flamme: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(0)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa3758eac4c25825d7f7cb8f5ec4bc610e">bonus::puissance_flamme</a>));
<a name="l01145"></a>01145         mvwprintw(win, ypos+3, xpos-24, <span class="stringliteral">&quot;Declancheur manuel: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(0)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efaf580f32a0c46beb866416ad197e19757">bonus::declancheur</a>));
<a name="l01146"></a>01146         mvwprintw(win, ypos+4, xpos-24, <span class="stringliteral">&quot;Pousse bombe: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(0)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efae2dd393722ba461c826db4bc25f044eb">bonus::pousse_bombe</a>));
<a name="l01147"></a>01147         mvwprintw(win, ypos+5, xpos-24, <span class="stringliteral">&quot;Nombre de vie: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(0)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa1246f4ca553bef6a133a81553cbb9b41">bonus::vie</a>));
<a name="l01148"></a>01148     }
<a name="l01149"></a>01149 
<a name="l01150"></a>01150 
<a name="l01151"></a>01151     <span class="keyword">static</span> <span class="keywordtype">bool</span> cleanPlayer2=0;
<a name="l01152"></a>01152     <span class="comment">// Joueur 2</span>
<a name="l01153"></a>01153     <span class="keywordflow">if</span>( p-&gt;<a class="code" href="classpartie.html#ac5fd40da2e74478b0dee7fb7fe505929" title="Retourne le nombre de joueur.">nbJoueurs</a>() &gt; 1 &amp;&amp; (p-&gt;<a class="code" href="classpartie.html#a54be3942d34eaa369cfe6a8430da639d" title="Renvoie le type de connection: Host, Local, None ( pas de connection ).">connection</a>() == <a class="code" href="classpartie.html#ab404c2e853ee2e820a91f97bbb826207ac19eeeee526d4057247f29b9530ec8fa" title="Pas de connection.">partie::CNX_None</a> || ( p-&gt;<a class="code" href="classpartie.html#a54be3942d34eaa369cfe6a8430da639d" title="Renvoie le type de connection: Host, Local, None ( pas de connection ).">connection</a>() != <a class="code" href="classpartie.html#ab404c2e853ee2e820a91f97bbb826207ac19eeeee526d4057247f29b9530ec8fa" title="Pas de connection.">partie::CNX_None</a> &amp;&amp; (p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#a73febc8006d08e4414cf6463a3b8ad9d" title="Renvoie l&amp;#39;état du personnage vis à vis du reseau. (Local ou non).">isLocal</a>() || ( !p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#a73febc8006d08e4414cf6463a3b8ad9d" title="Renvoie l&amp;#39;état du personnage vis à vis du reseau. (Local ou non).">isLocal</a>() &amp;&amp; p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#a33ea05f68d9ddf2cf242b9b19c8b1ceb" title="Renvoie le socket utilisé (Par defaut: INVALID_SOCKET).">socket</a>() != INVALID_SOCKET )))) ){
<a name="l01154"></a>01154         couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( 2 );
<a name="l01155"></a>01155         wattron(win, couleur);
<a name="l01156"></a>01156         mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-6, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, <span class="stringliteral">&quot;%s&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#a815c8505a10a43da797e0424a0192f92" title="Renvoie le nom du personnage.">nom</a>()-&gt;c_str());
<a name="l01157"></a>01157         wattroff(win, couleur);
<a name="l01158"></a>01158         <span class="keywordflow">if</span>( p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>() ){
<a name="l01159"></a>01159             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-5, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Nombre de bombe: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa5377d867e4dcd5d8e6656217d02fdc9f">bonus::bombe</a>));
<a name="l01160"></a>01160             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-4, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Puissance de flamme: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa3758eac4c25825d7f7cb8f5ec4bc610e">bonus::puissance_flamme</a>));
<a name="l01161"></a>01161             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-3, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Declancheur manuel: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efaf580f32a0c46beb866416ad197e19757">bonus::declancheur</a>));
<a name="l01162"></a>01162             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-2, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Pousse bombe: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efae2dd393722ba461c826db4bc25f044eb">bonus::pousse_bombe</a>));
<a name="l01163"></a>01163             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-1, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Nombre de vie: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(1)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa1246f4ca553bef6a133a81553cbb9b41">bonus::vie</a>));
<a name="l01164"></a>01164         }
<a name="l01165"></a>01165         cleanPlayer2 = 1;
<a name="l01166"></a>01166     }<span class="keywordflow">else</span>{
<a name="l01167"></a>01167         <span class="keywordflow">if</span>( cleanPlayer2 ){
<a name="l01168"></a>01168             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-6, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01169"></a>01169             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-5, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01170"></a>01170             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-4, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01171"></a>01171             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-3, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01172"></a>01172             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-2, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01173"></a>01173             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-1, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01174"></a>01174             cleanPlayer2 = 0;
<a name="l01175"></a>01175         }
<a name="l01176"></a>01176     }
<a name="l01177"></a>01177 
<a name="l01178"></a>01178     <span class="keyword">static</span> <span class="keywordtype">bool</span> cleanPlayer3=0;
<a name="l01179"></a>01179     <span class="comment">// Joueur 3</span>
<a name="l01180"></a>01180     <span class="keywordflow">if</span>( p-&gt;<a class="code" href="classpartie.html#ac5fd40da2e74478b0dee7fb7fe505929" title="Retourne le nombre de joueur.">nbJoueurs</a>() &gt; 2 &amp;&amp; (p-&gt;<a class="code" href="classpartie.html#a54be3942d34eaa369cfe6a8430da639d" title="Renvoie le type de connection: Host, Local, None ( pas de connection ).">connection</a>() == <a class="code" href="classpartie.html#ab404c2e853ee2e820a91f97bbb826207ac19eeeee526d4057247f29b9530ec8fa" title="Pas de connection.">partie::CNX_None</a> || ( p-&gt;<a class="code" href="classpartie.html#a54be3942d34eaa369cfe6a8430da639d" title="Renvoie le type de connection: Host, Local, None ( pas de connection ).">connection</a>() != <a class="code" href="classpartie.html#ab404c2e853ee2e820a91f97bbb826207ac19eeeee526d4057247f29b9530ec8fa" title="Pas de connection.">partie::CNX_None</a> &amp;&amp; (p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#a73febc8006d08e4414cf6463a3b8ad9d" title="Renvoie l&amp;#39;état du personnage vis à vis du reseau. (Local ou non).">isLocal</a>() || ( !p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#a73febc8006d08e4414cf6463a3b8ad9d" title="Renvoie l&amp;#39;état du personnage vis à vis du reseau. (Local ou non).">isLocal</a>() &amp;&amp; p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#a33ea05f68d9ddf2cf242b9b19c8b1ceb" title="Renvoie le socket utilisé (Par defaut: INVALID_SOCKET).">socket</a>() != INVALID_SOCKET )))) ){
<a name="l01181"></a>01181         couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( 3 );
<a name="l01182"></a>01182         wattron(win, couleur);
<a name="l01183"></a>01183         mvwprintw(win, ypos, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, <span class="stringliteral">&quot;%s&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#a815c8505a10a43da797e0424a0192f92" title="Renvoie le nom du personnage.">nom</a>()-&gt;c_str());
<a name="l01184"></a>01184         wattroff(win, couleur);
<a name="l01185"></a>01185         <span class="keywordflow">if</span>( p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>() ){
<a name="l01186"></a>01186             mvwprintw(win, ypos+1, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Nombre de bombe: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa5377d867e4dcd5d8e6656217d02fdc9f">bonus::bombe</a>));
<a name="l01187"></a>01187             mvwprintw(win, ypos+2, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Puissance de flamme: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa3758eac4c25825d7f7cb8f5ec4bc610e">bonus::puissance_flamme</a>));
<a name="l01188"></a>01188             mvwprintw(win, ypos+3, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Declancheur manuel: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efaf580f32a0c46beb866416ad197e19757">bonus::declancheur</a>));
<a name="l01189"></a>01189             mvwprintw(win, ypos+4, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Pousse bombe: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efae2dd393722ba461c826db4bc25f044eb">bonus::pousse_bombe</a>));
<a name="l01190"></a>01190             mvwprintw(win, ypos+5, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+4, <span class="stringliteral">&quot;Nombre de vie: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(2)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa1246f4ca553bef6a133a81553cbb9b41">bonus::vie</a>));
<a name="l01191"></a>01191         }
<a name="l01192"></a>01192         cleanPlayer3 = 1;
<a name="l01193"></a>01193     }<span class="keywordflow">else</span>{
<a name="l01194"></a>01194         <span class="keywordflow">if</span>( cleanPlayer3 ){
<a name="l01195"></a>01195             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01196"></a>01196             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+1, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01197"></a>01197             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+2, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01198"></a>01198             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+3, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01199"></a>01199             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+4, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01200"></a>01200             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+5, xpos+l_map-&gt;<a class="code" href="classmap.html#abc682d96c6d194b75d2e8a6430b5b076" title="Renvoie la taille X de la map.">X</a>()+2, getmaxx(win)-2 );
<a name="l01201"></a>01201             cleanPlayer3 = 0;
<a name="l01202"></a>01202         }
<a name="l01203"></a>01203     }
<a name="l01204"></a>01204 
<a name="l01205"></a>01205     <span class="keyword">static</span> <span class="keywordtype">bool</span> cleanPlayer4=0;
<a name="l01206"></a>01206     <span class="comment">// Joueur 4</span>
<a name="l01207"></a>01207     <span class="keywordflow">if</span>( p-&gt;<a class="code" href="classpartie.html#ac5fd40da2e74478b0dee7fb7fe505929" title="Retourne le nombre de joueur.">nbJoueurs</a>() == 4 &amp;&amp; (p-&gt;<a class="code" href="classpartie.html#a54be3942d34eaa369cfe6a8430da639d" title="Renvoie le type de connection: Host, Local, None ( pas de connection ).">connection</a>() == <a class="code" href="classpartie.html#ab404c2e853ee2e820a91f97bbb826207ac19eeeee526d4057247f29b9530ec8fa" title="Pas de connection.">partie::CNX_None</a> || ( p-&gt;<a class="code" href="classpartie.html#a54be3942d34eaa369cfe6a8430da639d" title="Renvoie le type de connection: Host, Local, None ( pas de connection ).">connection</a>() != <a class="code" href="classpartie.html#ab404c2e853ee2e820a91f97bbb826207ac19eeeee526d4057247f29b9530ec8fa" title="Pas de connection.">partie::CNX_None</a> &amp;&amp; (p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#a73febc8006d08e4414cf6463a3b8ad9d" title="Renvoie l&amp;#39;état du personnage vis à vis du reseau. (Local ou non).">isLocal</a>() || ( !p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#a73febc8006d08e4414cf6463a3b8ad9d" title="Renvoie l&amp;#39;état du personnage vis à vis du reseau. (Local ou non).">isLocal</a>() &amp;&amp; p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#a33ea05f68d9ddf2cf242b9b19c8b1ceb" title="Renvoie le socket utilisé (Par defaut: INVALID_SOCKET).">socket</a>() != INVALID_SOCKET )))) ){
<a name="l01208"></a>01208         couleur = <a class="code" href="classmoteur__ncurses.html#a4c23b0d0242fcc5f3c90c8162112559d" title="Renvoie la couleur d&amp;#39;un joueur.">getCouleurJoueur</a>( 4 );
<a name="l01209"></a>01209         wattron(win, couleur);
<a name="l01210"></a>01210         mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-6, xpos-26, <span class="stringliteral">&quot;%s&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#a815c8505a10a43da797e0424a0192f92" title="Renvoie le nom du personnage.">nom</a>()-&gt;c_str());
<a name="l01211"></a>01211         wattroff(win, couleur);
<a name="l01212"></a>01212         <span class="keywordflow">if</span>( p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>() ){
<a name="l01213"></a>01213             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-5, xpos-24, <span class="stringliteral">&quot;Nombre de bombe: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa5377d867e4dcd5d8e6656217d02fdc9f">bonus::bombe</a>));
<a name="l01214"></a>01214             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-4, xpos-24, <span class="stringliteral">&quot;Puissance de flamme: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa3758eac4c25825d7f7cb8f5ec4bc610e">bonus::puissance_flamme</a>));
<a name="l01215"></a>01215             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-3, xpos-24, <span class="stringliteral">&quot;Declancheur manuel: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efaf580f32a0c46beb866416ad197e19757">bonus::declancheur</a>));
<a name="l01216"></a>01216             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-2, xpos-24, <span class="stringliteral">&quot;Pousse bombe: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efae2dd393722ba461c826db4bc25f044eb">bonus::pousse_bombe</a>));
<a name="l01217"></a>01217             mvwprintw(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-1, xpos-24, <span class="stringliteral">&quot;Nombre de vie: %d&quot;</span>, p-&gt;<a class="code" href="classpartie.html#aa259db60507f45e2307fa457879be8ee" title="Renvoie un joueur.">joueur</a>(3)-&gt;<a class="code" href="classperso.html#add0aebd55226ce05235400c09a529441" title="Renvoie les armes et bonus du personnage.">armements</a>()-&gt;<a class="code" href="classbonus.html#a24519446ce39620ac958f7702c9ba868" title="Renvoie la quantité MAX que le joueur a rammassé d&amp;#39;un bonus.">quantiteMAX</a>(<a class="code" href="classbonus.html#a0d304c6fa948d0cbc4e787d775bcb7efa1246f4ca553bef6a133a81553cbb9b41">bonus::vie</a>));
<a name="l01218"></a>01218         }
<a name="l01219"></a>01219         cleanPlayer4 = 1;
<a name="l01220"></a>01220     }<span class="keywordflow">else</span>{
<a name="l01221"></a>01221         <span class="keywordflow">if</span>( cleanPlayer4 ){
<a name="l01222"></a>01222             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-6, xpos-26, 26 );
<a name="l01223"></a>01223             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-5, xpos-26, 26 );
<a name="l01224"></a>01224             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-4, xpos-26, 26 );
<a name="l01225"></a>01225             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-3, xpos-26, 26 );
<a name="l01226"></a>01226             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-2, xpos-26, 26 );
<a name="l01227"></a>01227             <a class="code" href="classmoteur__ncurses.html#a208a8f8e69a8bcfe2fe3b01291195d1c" title="Permet d&amp;#39;effacer une ligne.">cleanline</a>(win, ypos+l_map-&gt;<a class="code" href="classmap.html#abcb25776d119cd3f2864c67ec05a6a4a" title="Renvoie la taille Y de la map.">Y</a>()-1, xpos-26, 26 );
<a name="l01228"></a>01228             cleanPlayer4 = 0;
<a name="l01229"></a>01229         }
<a name="l01230"></a>01230     }
<a name="l01231"></a>01231 
<a name="l01232"></a>01232 
<a name="l01233"></a>01233 
<a name="l01234"></a>01234     <span class="comment">//refresh(); /* Print it on to the real screen */</span>
<a name="l01235"></a>01235     wrefresh(win);
<a name="l01236"></a>01236 
<a name="l01237"></a>01237     <span class="keywordflow">return</span> wgetch(win);
<a name="l01238"></a>01238 }
</pre></div></div>
</div>
<hr class="footer"/><address class="footer"><small>Généré le Fri Jan 21 2011 01:21:27 pour Bomberman par&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
</body>
</html>
